如何使用Ember Data处理400错误(2.4.0-canary)

时间:2016-01-02 20:03:24

标签: ember.js ember-data

我无法弄清楚我的问题是否与我的查询或我的回复或其他内容有关。

在我的路线中,我使用queryRecord

model(params) {
  return this.store.queryRecord('invitation', { 
    'invitation_token' : params.invitationToken 
  });
},

我在服务器端正确接收,但我正在测试邀请令牌不再存在的情况。因此,服务器返回带有json有效负载的400,其中包含错误的解释。

{"error":"Error finding invitation"}

但回到余烬一边,我只得到两个错误(实际上它只是一个)。

Error while processing route: accept-invitation Ember Data Request GET /api/users/invitation returned a 400
Error: Ember Data Request GET /api/users/invitation returned a 400

过去(在Ember 2.2.1下):

Error while processing route: accept-invitation Adapter operation failed Error: Adapter operation failed
Error: Adapter operation failed

如果没有找到令牌,我应该从服务器返回什么?这些消息使得它看起来像是在Ember内发生意外。

我假设400会告诉Ember有错误,它会进入路径的错误状态。但它会转到应用程序级别的错误状态,并在日志中吐出这些错误消息。

期待服务器返回400,所以我不确定为什么Ember会抱怨。我该怎么回事?我该如何正确处理呢?

1 个答案:

答案 0 :(得分:3)

我相信您的应用程序应该返回格式不同的响应。根据{{​​3}},

  

错误对象必须作为由顶部错误键入的数组返回   JSON API文档的级别。

规范还规定可以提供以下成员(请参阅完整列表的链接)。

  

标题:一个简短的,人类可读的问题摘要,不应该是   从发生变为发生问题,除了   本地化的目的。

     

详细信息:一个人类可读的解释   具体到这个问题的发生。喜欢标题,这个领域   值可以本地化

     

状态:适用于此问题的HTTP状态代码,表示为   字符串值。

如果您尝试按照以下内容返回某些内容,那么工具的行为如何?

{
  "errors": [
   {
    "status": "400",
    "title": "Error finding invitation"
   }
  ]
}