使用 vue 请求 api 的时候,控制台报错 undefined: /api/query
这是因为使用了 interceptor,参考vue-and-axios-request-undefined
全局搜索 interceptor,可以发现有如下代码:
service.interceptors.response.use(
response => {
// dataAxios 是 axios 返回数据中的 data
const dataAxios = response.data
// 这个状态码是和后端约定的
const { code } = dataAxios
// 根据 code 进行判断
if (code === undefined) {
// 如果没有 code 代表这不是项目后端开发的接口 比如可能是 D2Admin 请求最新版本
return dataAxios
} else {
// 有 code 代表这是一个后端接口 可以进行进一步的判断
switch (code) {
case 0:
// [ 示例 ] code === 0 代表没有错误
return dataAxios.data
case 'xxx':
// [ 示例 ] 其它和后台约定的 code
errorCreate(`[ code: xxx ] ${dataAxios.msg}: ${response.config.url}`)
break
default:
// 不是正确的 code
errorCreate(`${dataAxios.msg}: ${response.config.url}`)
break
}
}
},
最后一行代码引发的 undefined 错误
errorCreate(`${dataAxios.msg}: ${response.config.url}`)
原因:后端代码返回的接口时,code 字段必须是数值,不能是字符串类型,否则前端会走到 default:
代码段