API服务返回200,但实际上是404
API service return 200, but it is really a 404
我有这个VUEJS/VUEJS资源片段,它从API服务中获取数据。
fetchData: function(name){
var self = this;
self.$http.get('http://www.apiservice.com/', {
params: {
city: name
},
}).then((response) => {
// success callback
toastr.success('Success!');
console.debug(response);
}, (response) => {
// error
toastr.error('Something went wrong!')
});
}
它将总是返回一个200 OK响应…所以我真的不知道如何显示toastr.error
,如果它总是"成功"。
错误响应看起来像这样:{Response: "False", Error: "City not found!"}
.
我如何在200 ok返回的响应中获取false
,并抛出错误?
将"no response found"返回为HTTP 200似乎是糟糕的API设计,但如果您无法控制API,则只需在成功函数中处理此问题。
将错误处理代码放入函数中并相应地调用它:
fetchData: function(name){
var self = this;
self.$http.get('http://www.apiservice.com/', {
params: {
city: name
},
}).then((response) => {
// success callback
if (response.Response === "False") {
onError(response)
} else {
toastr.success('Success!');
console.debug(response);
}
}, onError);
}
function onError(response) {
toastr.error('Something went wrong!')
}
你可以使用承诺链将承诺从resolve转换为reject:
fetchData: function(name){
var self = this;
self.$http.get('http://www.apiservice.com/', {
params: {
city: name
},
}).then(response)=>{
if(response.Response === "False"){
return Promise.reject(response)
}else{
return response
}
},(a)=>a).then((response) => {
// success callback
toastr.success('Success!');
console.debug(response);
}, (response) => {
// error
toastr.error('Something went wrong!')
});
}
重要的部分是:
then(response)=>{
if(response.Response === "False"){
return Promise.reject(response)
}else{
return response
}
},(a)=>a)
因此,如果响应是有效的,并且数据包含Response: "False"
,我们返回一个被拒绝的承诺,否则我们只是返回响应数据,然后将其包装在一个已解决的承诺中,之后下一个then
像以前一样执行,但无效的数据已经被拒绝。
相关文章:
- 如何使用WCF服务和javascript表单post上传.doc文件
- 监视函数从服务返回不起作用,但作用域函数起作用
- 通过Magento的网络服务检索运费
- 在同一个服务工作者中处理service-worker.js有任何影响吗
- 使用angular.js问题的JavaSpringREST服务
- AngularJS-需要在index.html页面中访问来自服务的数据
- 如何在Ionic2测试版中包含Ionic.io服务
- 基于api密钥的NodeJS web服务
- call()和apply()实际上是用来欺骗方法处理类似数组的对象的
- Redux应用程序结构-在哪里放置服务/业务逻辑
- Liferay:从portlet调用JSON服务
- 使用javascript在客户端上使用Web服务
- 如何通过安全的https连接在javascript中使用基于soap xml的Web服务
- 从Javascript连接到SOAP Web服务
- 如何检测服务广告维度
- 很少有角服务,只有常数不同
- 如何在服务、技能、投资组合等方面添加滑动效果
- 尝试将服务链接到控制器时出现角度问题
- Web服务调用返回错误,没有'实际上,我似乎并没有和服务部门交谈
- API服务返回200,但实际上是404