【发布时间】:2016-05-28 09:09:19
【问题描述】:
我的前端应用程序(ember 2.3.1,ember-data 2.3.3)和后端(带有 jsonapi 序列化程序的 rails 5)之间的通信遇到了问题。
我会尽量描述我遇到的所有情况。
在后端,我想在 jsonapi 中发送响应并以 REST 格式获取请求。我正在使用序列化程序以及我如何检查后端发送正确的响应。例如{"data":[{"id":"1","type":"projects","attributes":{"title":"one"},"links...
在 ember 方面,我定义了 jsonapi 适配器和 rest 序列化程序。
当 ember 从后端接收数据时,我在控制台中收到警告,例如 Encountered "data" in payload, but no model was found for model name "datum" (resolved model name using smart-task-ember@serializer:application:.modelNameFromPayloadKey("data")。
当我将 ember 中的序列化程序从 rest 更改为 jsonapi 时,一切都会正常工作。但是请求以 jsonapi 格式发送到后端。我收到了下一个参数{"data"=>{"attributes"=>{"title"=>"test"}, "type"=>"projects"}, "controller"=>"projects", "action"=>"create", "project"=>{}} 而不是{"project"=>{"title"=>"qwe"}, "controller"=>"projects", "action"=>"create"}
我不明白为什么 REST 序列化器和 jsonapi 适配器会相互影响,以及如何在 ember 中使用 REST 序列化器。我花了很多时间在这种奇怪的行为上,但什么都不懂。
我很乐意得到任何帮助:)
【问题讨论】:
-
我试过使用 rest 适配器和 jsonapi 序列化程序,没有任何改变。看起来适配器和序列化器应该只使用一种格式。这也让我很困惑。
-
我认为最好的办法是坚持使用 JSONAPI 适配器和序列化程序。您将需要覆盖序列化程序上的
serializeIntoHash和/或serialize方法,以获取要发送到后端的 REST JSON 格式。 -
@Grapho 谢谢,这就像一个变种,但我仍然认为我身边遗漏了一些东西。
-
为什么不使用 REST API 或 JSON API?恕我直言,同时使用这两种方法会给您的 API 带来一些混乱。
标签: ruby-on-rails rest ember.js json-api