在 Ember 中自定义请求格式

Customize request format in Ember

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

默认情况下,Rails 创建控制器以期望此格式的参数,假设模型是 Car:

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

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

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

我该怎么做才能使 Ember 以我的 Rails 服务器能够理解的方式发送请求负载?谢谢。

您的 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