【问题标题】:What RESTAdapter expects on server responses and what requests should server expect?RESTAdapter 对服务器响应的期望是什么,服务器应该期望什么请求?
【发布时间】:2015-04-21 15:56:54
【问题描述】:

我使用的是 Django REST 框架,而不是 Rails(它似乎有几个神奇的宝石可以让 Ember 的一切都快速运行),我在试图弄清楚 Ember 如何期望响应时遇到了一些困难。我正在使用 Ember CLI,因此我也在使用 Ember 数据。

当我只是检索一个对象或对象数组时,文档仅说明了典型的 GET 用法。文档状态:

JSON 负载应该是一个包含根属性内记录的对象

关于约定:

JSON 负载中的属性名称应该是 Ember.js 模型中属性的驼峰式版本。

没问题。

1.但是出现错误时 API 应该如何响应呢?

好的,因此文档还指出您可以使用ajaxError 检查jqXHR 状态是否有错误,然后返回填充的DS.Error 以供记录。但是,我应该如何返回不同类型的错误。例如,假设用户会话现在无效,因此服务器无法按请求删除记录。

2。 Ember 将如何提交请求?

总的来说,我对 REST 很陌生。我认为 Ember 只需将适当的动词用于它想要的操作:GET、POST、PUT、DELETE。我认为很明显它会将所有模型的字段发送到 POST 一个新字段,但是 DELETE 怎么样? Ember 会发送所有记录还是只发送 ID 来删除对象?

【问题讨论】:

    标签: django ember.js ember-data


    【解决方案1】:

    通常,您应该能够通过打开浏览器开发工具并查看网络请求来查看 Ember 发出的请求。

    Ember 数据喜欢 api 以错误哈希值进行响应,如下所示:

    {"errors":{"title":["can't be blank"]}}
    

    那么只要定义一个函数来处理错误情况:

    Ember.Controller.extend({
      actions: {
        deleteUser: function() {
          var user = this.model;
          function success() {
            // do something cool? 
          }
    
          function failure() {
            user.rollback();    
          }
    
          user.destroyRecord().then(success, failure);
        }
      }
    });
    

    然后 user.errors 将被自动填充,您可以在模板中执行 if user.errors。

    【讨论】:

      猜你喜欢
      • 2011-11-13
      • 1970-01-01
      • 2020-11-24
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 2021-01-25
      • 2011-01-20
      • 2016-08-31
      相关资源
      最近更新 更多