Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在Ruby on Rails中从JSON edpoint url提取参数?_Ruby On Rails_Json_Endpoint - Fatal编程技术网

Ruby on rails 如何在Ruby on Rails中从JSON edpoint url提取参数?

Ruby on rails 如何在Ruby on Rails中从JSON edpoint url提取参数?,ruby-on-rails,json,endpoint,Ruby On Rails,Json,Endpoint,我已经为这个任务奋斗了几个小时了。因为我以前从未使用过JSON格式,所以我不知道如何从接收到的URL提取参数到端点API 假设我有这样的url: /endpoint/name=anna&email=whatever@example.com def get_params response = request.body @user = JSON.parse(response) end 但请求格式为: /endpoint.json?name=:name&email=:ema

我已经为这个任务奋斗了几个小时了。因为我以前从未使用过JSON格式,所以我不知道如何从接收到的URL提取参数到端点API

假设我有这样的url:

/endpoint/name=anna&email=whatever@example.com
def get_params
  response = request.body
  @user = JSON.parse(response)
end
但请求格式为:

/endpoint.json?name=:name&email=:email
如何提取这些参数?我尝试过创建这样的方法:

/endpoint/name=anna&email=whatever@example.com
def get_params
  response = request.body
  @user = JSON.parse(response)
end
但我甚至不知道如何正确地测试它


我应该为我收到的帖子创建一个路由吗?

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

如果您的URL是
/endpoint.json?name[]=anna&email[]=whatever@example.com
(即,对于响应json的
端点
资源来说,只是一个普通的索引路由),您可以使用
参数[:name]获取名称数组
和带有
参数[:email]
的电子邮件数组

您的意思是我可以这样提取它:
@name=JSON.parse(params[:name])
?当我尝试此操作时,我得到了757:unexpected-token错误。无需解析JSON
params[:name]
在您的示例中,将是一个名称数组(在这个特定示例中,仅是一个名称数组:“anna”)。您可以说类似于
@names=params[:name]
@name=params[:name]的话。首先
。请参阅本节了解解释哦,当然是对的!我更新了我的答案,其中的
/endpoint.json?name=:name&email=:email
一行让我感到困惑。正如你和@vpsz所说,我确实从params那里得到了vaues,但是我现在有一些路由错误。我用URL格式测试所有内容:
/?name=anna
,而不是
/endpoint/name=anna
。没有问号,没有文件夹路径。您知道我应该为该POST请求提供哪些路由吗?@ZuzannaSt对于POST请求,您不应该在URL中提交查询参数。我假设您想要的是实际发送JSON,例如
{“name”:“anna”,“email”:whatever@example.com“}
。此数据应在HTTP请求正文中发送,该请求的
内容类型
标题应为
application/json
。在本页中,您可以看到如何在jQuery中发送POST JSON请求的基本示例。您的服务器端路由应该是POST/endpoint。在URL中使用查询参数对于JSON API来说是不好的做法。