ember-data API中的错误响应

马辛·普鲁西亚克(Marcin Pruciak)

我将文档保存到API的代码如下所示

    save(category) {
        category.save().then(() => {
            this.transitionTo('categories');
        }).catch((adapterError) => {
            console.log(category.get('errors').toArray());
            console.log(category.get('isValid'));
        });
    }, 

API的答案是:

{“错误”:[{“属性”:“名称”,“消息”:“此值不能为空。”}]}

然后

category.get('isValid')

仍然返回true。

我的问题是,验证错误应该是什么样子?

海因里希·李(Heinrich Lee Yu)

默认情况下,当状态码为422时,ember-data的适配器确定响应无效。您可以重写isInvalid适配器功能来进行更改。

此外,ember-data现在希望将错误格式化为json-api错误对象。如果您的后端未以这种格式返回它,则可以通过覆盖handleResponse适配器功能在ember中对其进行转换

这是一个示例json-api错误:

{"errors": [
  {
    "detail": "Must be unique",
    "source": { pointer: "/data/attributes/title"}
  },
  {
    "detail": "Must not be blank",
    "source": { pointer: "/data/attributes/content"}
  }
]}

如果返回上面描述的错误响应,则必须在适配器中执行以下操作:

handleResponse(status, headers, payload) {                                                                                                                                                                                               
  if (status === 422 && payload.errors) {                                                                                                                                                                                                
    let jsonApiErrors = [];                                                                                                                                                                                                              

    for (let key in payload.errors) {                                                                                                                                                                                                    
      for (let i = 0; i < payload.errors[key].length; i++) {                                                                                                                                                                             
        jsonApiErrors.push({                                                                                                                                                                                                             
          detail: payload.errors[key][i],                                                                                                                                                                                                
          source: {                                                                                                                                                                                                                      
            pointer: `data/attributes/${key}`                                                                                                                                                                                            
          }                                                                                                                                                                                                                              
        });                                                                                                                                                                                                                              
      }                                                                                                                                                                                                                                  
    }                                                                                                                                                                                                                                    

    return new DS.InvalidError(jsonApiErrors);                                                                                                                                                                                           
  } else {                                                                                                                                                                                                                               
    return this._super(...arguments);                                                                                                                                                                                                    
  }                                                                                                                                                                                                                                      
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

处理错误时如何在ember-data中设置自定义响应json

来自分类Dev

Ember Data中的单向关系?

来自分类Dev

Ember Data 2.1.0忽略了我的JSON响应中的links属性

来自分类Dev

访问Ember-Data的验证错误

来自分类Dev

Ember Data JSON-API hasMany:如何?

来自分类Dev

使用ember-data处理ember.js中的路由错误时出错

来自分类Dev

Ember Data 1.0.0 JSON中的Relationship

来自分类Dev

Ember-Data中的显式反转

来自分类Dev

模板中的Ember-data异步模型

来自分类Dev

使用Ember Data显示JSON中的数据

来自分类Dev

Ember Data计算属性中的承诺结果

来自分类Dev

模板中的Ember-data异步模型

来自分类Dev

Ember Data计算属性中的承诺结果

来自分类Dev

无法解析ember中的API响应

来自分类Dev

在Ember-Data中记录每个API请求

来自分类Dev

如何获取更多特定的错误,Ember Data 422错误

来自分类Dev

Ember.js错误:使用ember-data保存记录时找不到'id'的模型

来自分类Dev

检查Ember和Ember Data中的相关对象是否为空

来自分类Dev

Ember:使用 ember-data 访问 setupController 中的侧载数据

来自分类Dev

如何在QUnit中设置Ember Data多态模型?

来自分类Dev

从EmberJS和ember-data的选择表单中获取值

来自分类Dev

在ember-data 1.0.0-beta中扩展ApplicationAdapter

来自分类Dev

Ember Data Transform中的访问控制器属性

来自分类Dev

遍历模板中的Ember-Data模型属性

来自分类Dev

如何在 Ember 模板中显示 API 响应?

来自分类Dev

如何在Ember.js中创建一个计算属性,以查看单个Ember Data属性是否脏了?

来自分类Dev

重试来自Ember Data的请求

来自分类Dev

Ember-Data的奇怪行为

来自分类Dev

Ember-Data的奇怪行为

Related 相关文章

热门标签

归档