我想使用 text param创建一个API请求,其中包含params[:brand][:tag_list]
中当前包含的信息,该信息似乎保存为单个逗号分隔的字符串。提出API请求的正确方法是什么?
控制器代码:
current_user.tag(@brand, :with => params[:brand][:tag_list], :on => :tags)
url = "http://www.viralheat.com/api/sentiment/review.json"
@sentiment_response = url.to_uri.get(
:api_key => 'MY_KEY',
:text => :tag_list ).deserialize #This is what I'm currently using and is wrong
日志中的响应代码:
<- (GET 49996946161 2204098100) http://www.viralheat.com:80/api/sentiment/review.json?api_key=MY_KEY&text=tag_list
-> (GET 49996946161 2204098100) 200 OK (62 bytes 3.09s)
答案 0 :(得分:1)
查看viralheat
的文档,看起来他们的api只接受两个参数:api_key
和text
。假设params[:brand][:tag_list]
以逗号分隔的字符串,您可以像这样形成您的请求:
current_user.tag(@brand, :with => params[:brand][:tag_list], :on => :tags)
url = "http://www.viralheat.com/api/sentiment/review.json"
@sentiment_response = url.to_uri.get(
:api_key => 'MY_KEY',
:text => params[:brand][:tag_list].split(',').join('&') ).deserialize
这应该创建网址:
http://www.viralheat.com/api/sentiment/review.json?api_key=MY_KEY&text=cat%26dog%26mouse
params[:brand][:tag_list].split(',')
将你的字符串分成一个数组,join('&')
将它变回一个字符串,但这一次用&符号分隔(这似乎是你想要的,基于你在a评论你原来的帖子)。你的uri.get方法应该逃避uri中的&符号,这就是你在最终网址中看到%26
的原因。这是正确的。