如何在 Rails API 对 post 请求的响应中包含新创建的模型对象?
How do I include a newly created model object in my Rails API response to a post request?
我有一个 Rails API 可以成功处理它通过 Post 请求接收的数据。在 create
操作的控制器中,我的响应代码为:
render json: project, status: 201
但我的回复不包括 project
,看起来像这样:
Response {type: "basic", url: "http://localhost:3000/api/save", redirected: false, status: 201, ok: true, …}body: (...)bodyUsed: falseheaders: Headers__proto__: Headersok: trueredirected: falsestatus: 201statusText: "Created"type: "basic"url: "http://localhost:3000/api/save"__proto__: ResponsearrayBuffer: ƒ arrayBuffer()blob: ƒ blob()body: (...)bodyUsed: (...)clone: ƒ clone()formData: ƒ formData()headers: (...)json: ƒ json()arguments: (...)caller: (...)length: 0name: "json"__proto__: ƒ ()[[Scopes]]: Scopes[0]ok: (...)redirected: (...)status: (...)statusText: (...)text: ƒ text()arguments: (...)caller: (...)length: 0name: "text"__proto__: ƒ ()[[Scopes]]: Scopes[0]type: (...)url: (...)constructor: ƒ Response()Symbol(Symbol.toStringTag): "Response"get body: ƒ ()get bodyUsed: ƒ ()get headers: ƒ ()get ok: ƒ ()get redirected: ƒ ()get status: ƒ ()get statusText: ƒ ()get type: ƒ ()get url: ƒ ()__proto__: Object
如何在 Post 请求的响应中包含模型对象,以便我可以在前端使用它而无需发出另一个请求?
首先,请确保您在 routes.rb 中的请求具有如下 {:format => :json}
以防您响应通常采用 JSON 格式:
post 'create_item' => 'items#create', as: 'public_holidays_by_year', :defaults => {:format => :json}
第二个,你需要定义携带project
数据的参数如下:
render json: {status: 201, project: project}
或
render json: project
在最后一个选项中,无需定义状态 201,因为它会由 rails 自动为创建请求创建,检查下面 link:
https://guides.rubyonrails.org/layouts_and_rendering.html#the-status-option
我有一个 Rails API 可以成功处理它通过 Post 请求接收的数据。在 create
操作的控制器中,我的响应代码为:
render json: project, status: 201
但我的回复不包括 project
,看起来像这样:
Response {type: "basic", url: "http://localhost:3000/api/save", redirected: false, status: 201, ok: true, …}body: (...)bodyUsed: falseheaders: Headers__proto__: Headersok: trueredirected: falsestatus: 201statusText: "Created"type: "basic"url: "http://localhost:3000/api/save"__proto__: ResponsearrayBuffer: ƒ arrayBuffer()blob: ƒ blob()body: (...)bodyUsed: (...)clone: ƒ clone()formData: ƒ formData()headers: (...)json: ƒ json()arguments: (...)caller: (...)length: 0name: "json"__proto__: ƒ ()[[Scopes]]: Scopes[0]ok: (...)redirected: (...)status: (...)statusText: (...)text: ƒ text()arguments: (...)caller: (...)length: 0name: "text"__proto__: ƒ ()[[Scopes]]: Scopes[0]type: (...)url: (...)constructor: ƒ Response()Symbol(Symbol.toStringTag): "Response"get body: ƒ ()get bodyUsed: ƒ ()get headers: ƒ ()get ok: ƒ ()get redirected: ƒ ()get status: ƒ ()get statusText: ƒ ()get type: ƒ ()get url: ƒ ()__proto__: Object
如何在 Post 请求的响应中包含模型对象,以便我可以在前端使用它而无需发出另一个请求?
首先,请确保您在 routes.rb 中的请求具有如下 {:format => :json}
以防您响应通常采用 JSON 格式:
post 'create_item' => 'items#create', as: 'public_holidays_by_year', :defaults => {:format => :json}
第二个,你需要定义携带project
数据的参数如下:
render json: {status: 201, project: project}
或
render json: project
在最后一个选项中,无需定义状态 201,因为它会由 rails 自动为创建请求创建,检查下面 link:
https://guides.rubyonrails.org/layouts_and_rendering.html#the-status-option