And*_*res 5 post json ruby-on-rails
我有一个ruby应用程序,我需要从客户端收到一个JSON.接收JSON就像接收字符串一样?我只需做以下事情:
information = params[:json_data]
data_parsed = JSON.parse(information)
Run Code Online (Sandbox Code Playgroud)
在获得JSON时,这是全部还是我必须做些不同的事情?发件人必须像字符串一样发送给我?
谢谢!
jdl*_*jdl 19
你所描述的是好的,但它意味着有一个名为的参数json_data.如果你的意思是整个POST身体只不过是JSON,那么你想看看request.raw_post.你最终得到这样的东西:
information = request.raw_post
data_parsed = JSON.parse(information)
Run Code Online (Sandbox Code Playgroud)
Hon*_*ong 13
该公文称,
如果请求的"Content-Type"标头设置为"application/json",则Rails会自动将参数加载到params散列中,您可以像平常一样访问它.
例如,如果您要发送此JSON内容:
Run Code Online (Sandbox Code Playgroud){ "company": { "name": "acme", "address": "123 Carrot Street" } }控制器将收到
params[:company]的{ "name" => "acme", "address" => "123 Carrot Street" }.此外,如果您已
config.wrap_parameters在初始化程序中打开或wrap_parameters在控制器中调用,则可以安全地省略JSON参数中的根元素.在这种情况下,将使用根据控制器名称选择的密钥克隆和包装参数.所以上面的JSON POST可以写成:Run Code Online (Sandbox Code Playgroud){ "name": "acme", "address": "123 Carrot Street" }并且,假设您将数据发送到CompaniesController,它将被包装在
:company密钥中,如下所示:Run Code Online (Sandbox Code Playgroud){ name: "acme", address: "123 Carrot Street", company: { name: "acme", address: "123 Carrot Street" } }
所以,如果你发送/ POST { "hello": "world"}来apples/,那么
params['apple']将是JSON的有效载荷的对象.
class ApplesController < ApplicationController
def create
# params['apple'] is the object represents Json payload
end
end
Run Code Online (Sandbox Code Playgroud)