2017-08-06 10 views
1

私はEmberアプリケーションからリクエストを受け取るRails 5バックエンドAPIを構築しています。しかし、私はRailsサーバーが理解できるようにEmberに要求をフォーマットするのにいくつかの問題を抱えています。デフォルトではEmberでリクエストフォーマットをカスタマイズする

は、Railsがモデルであると仮定すると、この形式のパラメータを期待するコントローラを作成し、たとえば、Car

"data": [ 
    { 
    id: "1", 
    type: "cars", 
    attributes: { 
     "name: "Foo", 
     "bar": "Bar", 
     ... 
    } 
] 
:エンバーは、この形式のリクエストを送信しているように見えるしかし

"car": { 
    "id": "1", 
    "name": "Foo", 
    "bar": "Bar", 
    ... 
} 

Emberがリクエストペイロードを送信するために、Railsサーバが理解できるようにするにはどうすればよいですか?ありがとうございました。

+0

レールREST形式であるため、アプリケーションアダプタとシリアライザは 'RESTAdapter'ない' JSONAPIAdapter'を拡張しなければなりません。 – kumkanillam

+0

ありがとうございます。アプリケーションアダプタ(application.js)をRESTAdapterに変更しようとしましたが、RESTSerializerの使用方法がわかりません。手伝って頂けますか? – Argus9

+0

シリアライザも 'DS.RESTSerializer'を拡張する必要があります。あなたのバックエンドAPIリクエストのレスポンスがRESTフォーマットに準拠していれば、すべてがそのまま使えます...バックエンドを書いているならJSONAPIフォーマットを考えてください – kumkanillam

答えて

1

あなたのRailsは正しく動作するためには、アダプタをDS.RESTAdapterに拡張し、シリアライザをDS.RESTSerializerに拡張する必要があります。デフォルトではJSONAPIAdapterJSONAPISerializerが付属します。

バックエンドコードを管理している場合は、そのエバーがそのまま使えるようにjson-api形式のレスポンスを書くことを検討してください。

リファレンス:フォーマットを受け入れる
https://emberjs.com/api/ember-data/2.14/classes/DS.RESTAdapter
https://emberjs.com/api/ember-data/2.14/classes/DS.RESTSerializer

https://emberjs.com/api/ember-data/2.14/classes/DS.JSONAPIAdapterhttps://emberjs.com/api/ember-data/2.14.9/classes/DS.JSONAPISerializer

関連する問題