我正在尝试在我的Rails应用程序中进行curl调用以进行情感分析,如此处所示https://algorithmia.com/algorithms/nlp/SentimentAnalysis
text = "I love coding"
secret = "yv5julwo8l7biwuni62r37t823igd87d97u623568yf"
result = `curl -X POST -d '"#{text}"' -H 'Content-Type: application/json' -H 'Authorization: Simple #{secret}' https://api.algorithmia.com/v1/algo/nlp/SentimentAnalysis/0.1.2`
result = JSON.parse(result)
但是在反勾号内部,它没有正确替换值。那么如何在curl命令中替换变量?
当我使用执行此代码时I love coding
,0
在他们的网站上得到响应时,我得到了2
(是正确的),因此使我相信它不能正确替代变量值。
用最简单的参数进行系统调用时,应始终使用Shellwords库来确保对参数进行正确的转义和/或引用。例如:
require "shellwords"
text = '"I love coding"'
secret = "yv5julwo8l7biwuni62r37t823igd87d97u623568yf"
args = [ "-X", "POST",
"-d", text,
"-H", "Content-Type: application/json",
"-H", "Authorization: Simple #{secret}",
"https://api.algorithmia.com/v1/algo/nlp/SentimentAnalysis/0.1.2" ]
data = `curl #{args.shelljoin}`
result = JSON.parse(data)
而且,正如Tin Man指出的那样,反引号既不是在Ruby中进行系统调用的唯一方法,也不一定是最佳方法。我强烈建议您阅读以下系列文章:https : //devver.wordpress.com/2009/06/30/a-dozen-or-so-ways-to-start-sub-processes-in-ruby-part-1 /
最后,当有诸如rest-client,faraday和httparty之类的宝石出现时,通常不是通过Ruby发出HTTP请求的最佳方法,更不用说标准库中的Net :: HTTP了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句