在Ember中自定义请求格式

时间:2017-08-06 05:23:25

标签: ruby-on-rails ember.js ember-data

我正在构建一个Rails 5后端API,它将接收来自我的Ember应用程序的请求。但是我在让Ember以我的Rails服务器理解的方式格式化请求时遇到了一些麻烦。

默认情况下,Rails创建控制器以期望这种格式的参数,假设模型是a,例如Car

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

然而,看起来Ember正在以这种格式发送请求:

"data": [
  {
    id: "1",
    type: "cars",
    attributes: {
      "name: "Foo",
      "bar": "Bar",
      ...
  }
]

如何使Ember以我的Rails服务器能理解的方式发送请求有效负载?谢谢。

1 个答案:

答案 0 :(得分:1)

您的Rails正在接受REST适配器格式,为了使其正常工作,您的适配器应扩展DS.RESTAdapter,并且序列化程序应扩展DS.RESTSerializer。默认情况下,它会附带JSONAPIAdapterJSONAPISerializer

如果您可以控制后端代码,那么考虑编写json-api格式的响应,该ember将开箱即用。

参考:
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.JSONAPIAdapter https://emberjs.com/api/ember-data/2.14.9/classes/DS.JSONAPISerializer