2015-02-06 78 views
0

我一直在为这个任务奋斗几个小时。由于我以前从未使用JSON格式,因此我不知道如何从我接收到的端点API中提取参数。如何从Ruby on Rails中的JSON edpoint url中提取参数?

比方说,我有网址是这样的:

/endpoint/name=anna&[email protected] 

但请求格式为:

/endpoint.json?name=:name&email=:email 

我如何提取这些参数?我试着像这样创建方法:

def get_params 
    response = request.body 
    @user = JSON.parse(response) 
end 

但我什至不知道如何正确地进行测试。

我应该为POST创建路由吗?

回答

0

您可以为JSON端点创建正常路由。查询字符串参数将一如既往地通过params散列可用。

0

如果您的网址是/endpoint.json?name[]=anna&email[][email protected](即只是一个Endpoint资源,响应JSON普通索引路径),就可以得到名称阵列params[:name]与​​电子邮件阵列。

+0

你的意思是我可以像这样解压缩: '@name = JSON.parse(params [:name])'?当我尝试这个时,我得到了757:意外令牌错误。 – ZuzannaSt 2015-02-06 23:43:13

+0

不需要解析JSON。在你的情况下,'params [:name]'将是一个名称数组(在这个特殊的例子中,只是一个名字的数组:“anna”)。你可以说'@names = params [:name]'或'@name = params [:name] .first'。当然,请看http://guides.rubyonrails.org/action_controller_overview.html#hash-and-array-parameters – finishingmove 2015-02-06 23:48:36

+0

哦!我用'/endpoint.json?name =:name&email =:email'这一行更新了我的答案,让我感到困惑。我确实已经从params中获得了vaues,并且@vpsz说我会,但我现在有一些路由错误。我正在使用URL格式测试所有内容:'/?name = anna'而不是'/ endpoint/name = anna'。没有问号,没有文件夹路径。你碰巧知道我应该为这个POST请求建立什么路线? – ZuzannaSt 2015-02-07 16:10:45