POST请求中的参数中没有数据

时间:2016-07-28 20:09:37

标签: ruby-on-rails angular

目前我的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());
}

请求由我的浏览器发出,我可以看到JSON数据: enter image description here

但是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>)>

有人能告诉我,有什么不对吗?

2 个答案:

答案 0 :(得分:1)

在您的情况下,您可以设置表单数据的内容类型,然后使用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());
    }
    

答案 1 :(得分:0)

问题可能与CORS(跨源资源共享)

有关

要在您的应用程序中启用 - &gt; Enabling cors Rails5

祝你好运