2016-07-28 101 views
2

目前,我遇到了Angular2和RoR5 API的問題。我試圖將對象保存到API服務器,但這不起作用。POST請求中的參數中沒有數據

這是我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

但回報率是不能夠得到這個職位數據。

[1] pry(#<Api::V1::FramesController>)> params 
=> <ActionController::Parameters {"format"=>:json, "controller"=>"api/v1/frames", "action"=>"create"} permitted: false> 
[2] pry(#<Api::V1::FramesController>)> 

有人可以告訴我,怎麼了?

+0

看起來你可能需要[許可證(http://api.rubyonrails.org/classes/ActionController/Parameters.html )'title','is_photolini'等。 –

回答

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()); 
    } 
    
+0

謝謝你的幫助。我有一個類似的解決方案,但它不起作用。現在我發現了這個問題。在返回行中,我將標題變量傳遞給post方法。它必須是選項。也許你可以改變你的解決方案,所以它可能對別人有幫助。 – user39063

0

的問題可能與CORS(跨源資源共享)

你的,使你的應用程序 - > Enabling cors Rails5

好運