Javascript Ember——JSON API适配器错误处理
当API请求导致404错误时,我想采取特定的操作。我已经了解到,适当的方法是处理应用程序适配器中的错误,如下所示:Javascript Ember——JSON API适配器错误处理,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,当API请求导致404错误时,我想采取特定的操作。我已经了解到,适当的方法是处理应用程序适配器中的错误,如下所示: handleResponse: function(status, headers, payload){ if(status === 404 && payload.errors){ //handle error } return this._super(...arguments); } return this.get('s
handleResponse: function(status, headers, payload){
if(status === 404 && payload.errors){
//handle error
}
return this._super(...arguments);
}
return this.get('store').find('user', userId).then((user) => {
this.set('user', user);
}).catch((reason) => {
var possible404 = reason.errors.filterBy('status','404');
if(possible404.length !== 0) {
// Handle 404 error
}
});
问题是,一旦我设置了适配器,它就无法完成页面加载,因此我可以处理页面本身的错误。相反,它会自动将我带到某个错误路径,该路径只显示“适配器错误”。如何停止/覆盖此行为?也许您可以根据请求处理此行为,如下所示:
handleResponse: function(status, headers, payload){
if(status === 404 && payload.errors){
//handle error
}
return this._super(...arguments);
}
return this.get('store').find('user', userId).then((user) => {
this.set('user', user);
}).catch((reason) => {
var possible404 = reason.errors.filterBy('status','404');
if(possible404.length !== 0) {
// Handle 404 error
}
});
虽然这不是您想要的解决方案,但此替代方案将允许您自定义更多。顺便说一句,自动行为似乎是对404的启动,因此如果您想覆盖该行为,请读取它。结果表明,我需要调整应用程序适配器中的HandlerResponse钩子,以将新的requestData参数传递给super方法
handleResponse (status, headers, payload, requestData) {
return this._super(status, headers, payload, requestData);
},
然后我把问题的第一行代码从
handleResponse: function(status, headers, payload) {
到
然后我就能够捕捉并处理错误了谢谢,我刚才又想出了另一个答案,但忘了我已经发布了这个。我会把我想出的答案贴出来。