老师, fetch可以在解析httpstatus的同时得到body吗
来源:17-1 快速使用HTML代码块
慕哥8298992
2017-05-24
您这个例子和官方的是差不多的
function checkStatus(response) { if (response.status >= 200 && response.status < 300) { return response } else { var error = new Error(response.statusText) error.response = response throw error } } function parseJSON(response) { return response.json() } fetch('/users') .then(checkStatus) .then(parseJSON) .then(function(data) { console.log('request succeeded with JSON response', data) }).catch(function(error) { console.log('request failed', error) })
我希望当http code为400的时候, 得到相应的json数据, 展示给开发人员, 因为400这种错误就是传参不对导致的, 我返回的例子是:
{
code: -1,
msg: '密码不能为空',
data: null
}
{
code: -2,
msg: '性别编码不是系统定义的',
data: null
}
当200的时候
{
code: 0
msg: 'ok',
data: {createdUser: {id...name....}}
}
{
code: 20
msg: '系统已存在该用户不能注册',
data: null
}
总之, 400的时候一般是开发人员不按照接口文档开发造成的错误, 让他自己解决, 不要打扰后端程序员, 200代表接口调用成功, 但是业务有可能错误的
他这2个then能不能合并成一个啊, 要不没法解决我的问题, 因为执行第一个then的时候我要调用第二个then中的数据
2回答
-
慕哥8298992
提问者
2017-05-24
老师, 我不太明白你说的啊,
我服务器端这边是springboot开发的, 统一异常处理针对客户端传递参数错误设定的规则是: 返回400, 然后json中有具体的错误信息, 我如果通过fetch读取呢?
then(response => 在这里判断如果是400, 那么读取json中的msg属性然后终止then, 弹出对话框展示json.msg
then(response => response.json)
then.....
012017-05-24 -
Parry
2017-05-24
400 是页面找不到,还怎么返回啊?也就是说用户页面输入错误了你要告诉用户不对?
这个在接口后面写个 url 重写,然后返回就可以了。
022017-05-26
相似问题