目前我在 Angular2 和 RoR5 API 方面遇到问题。我正在尝试将对象保存到 API 服务器,但这不起作用。
这是我的服务 Angular2 代码:
createFrame(frameData) {
let headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' });
let options = new RequestOptions({ headers: headers });
let body = JSON.stringify({frame: frameData});
return this.http.post(this.frameURL, body, headers).map((res: Response) => res.json());
}
但是 RoR 无法获取 POST 数据。
[1] pry(#<Api::V1::FramesController>)> params
=> <ActionController::Parameters {"format"=>:json, "controller"=>"api/v1/frames", "action"=>"create"} permitted: false>
[2] pry(#<Api::V1::FramesController>)>
谁能告诉我,出了什么问题吗?
最佳答案
在您的例子中,您设置表单数据的内容类型,并使用 JSON 格式发送一些内容。
您可以使用发送表单数据或 JSON 内容。
表单数据
createFrame(frameData) { let headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' }); let options = new RequestOptions({ headers: headers }); let form = new URLSearchParams(); form.set('param1', 'some value'); let body = form.toString(); return this.http.post(this.frameURL, body, headers).map((res: Response) => res.json()); }
JSON 数据
createFrame(frameData) { let headers = new Headers({ 'Content-Type': 'application/json' }); let options = new RequestOptions({ headers: headers }); let form = new URLSearchParams(); form.set('param1', 'some value'); let body = form.toString(); return this.http.post(this.frameURL, body, headers).map((res: Response) => res.json()); }
关于ruby-on-rails - POST 请求的参数中没有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38645842/