【问题标题】:Ember.js RESTAdapter requires PUT to response with JSONEmber.js RESTAdapter 需要 PUT 以使用 JSON 响应
【发布时间】:2013-07-02 12:29:55
【问题描述】:

当我在PostController 中执行this.get('store').commit(); 以发送带有JSON 的PUT 时:

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

并且来自 API 的响应只是状态码 200 然后 Post 模型 isError 是真的......

我必须使用与请求负载相同的主体或至少使用{"post": {}} 来响应以满足Post 模型并再次获得isLoaded 属性true

我想知道为什么 Ember.js 需要 PUT 响应才能包含 JSON 数据?

POST 需要 JSON 响应(带有后端生成的 ID 等)但是PUT 携带额外信息并增加带宽的原因是什么?特别是 Ember.js 甚至不会使用它们,带有 post 属性的空 JSON 就足够了......

【问题讨论】:

  • 你得到这个答案了吗?如果有,请分享。
  • 对此有任何线索吗?为什么我们需要在响应中发送整个数据?如果文档较大,则需要大量带宽。

标签: javascript rest ember.js ember-data


【解决方案1】:

可以在此处找到有关 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,则其他属性将被清除...

【讨论】:

    【解决方案2】:

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

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

    更多细节在这个thread

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-09
      • 2018-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多