3

When I do this.get('store').commit(); in PostController to sent PUT with JSON like:

{
    "post": {
         "text": "lorem ipsum",
         "something": 23
    } 
}

and response from API is just status code 200 then Post model isError is true...

I have to response with the same body as request payload or at least with {"post": {}} to satisfy Post model and get isLoaded property true again.

I'm wondering why Ember.js require PUT response to contains JSON data?

POST requires JSON response (with backend generated IDs etc) but what is the reason for PUT to carry extra information and increase bandwidth? Especially that Ember.js even won't use them, empty JSON with post property is enough...

4

2 回答 2

3

可以在这里找到关于 get、put 等的预期格式的一个很好的概述:http ://blog.embed.ly/post/50012690904/ember-at-embedly-tutorial-models-and-ember-data

确实是这样,您需要在 put 之后返回完整的对象(我不知道为什么会这样......)。

您可以使用 Chrome 的 Ember 扩展来监控这一点。在数据选项卡中,您将看到在创建新记录时,当您开始在输入字段中输入数据时,属性会被填充。单击保存 (transaction.commit) 时,您进入 inFlight 状态,此时您有一个模型,其中所有字段都已完成,除了 id 字段。当服务器响应进来时,模型用接收到的数据更新:id 属性完成,所有其他属性都被从服务器接收到的数据覆盖。如果您因此只返回 id,则其他属性将被清除...

于 2013-08-21T10:31:27.833 回答
1

从那时起,RESTAdapter 已被修改。它现在正在检查响应的 http 代码。

  • 200 用于加载返回的模型
  • 204 表示来自服务器的 OK 没有内容

更多细节在这个线程中

于 2015-04-17T19:39:56.563 回答