如果后台反馈API的内容中存在类似callback({...})这样怎么处理
资料链接:https://www.cnblogs.com/daysme/p/6541552.html
有时候接入的后台接口反馈的不是一个纯JSON字符串,而是一个json包含在callback()中的字符串
就像这个样子
callback({"username":"admin","email":""});
其实对于我们前端接入来说,这也就是一个字符串而已,那么既然是字符串,就直接截取就行了
正则表达式走起
// 比如你的接收到这样的字符串
const str = callback({"username":"admin","email":""});
//如此一来,就得到了一个除掉callbak()的json对象了
// resObj 也就是这个东西了 {username:"admin",email:""}
const resObj = JSON.parse(res.match(/^callback\((.*)\);$/)[1]);
当然上面就是个截取字符串的例子,下面就是真实项目中的代码
在的自己封装axiosutil的js请求脚本中进行统一拦截预先处理,这样具体页面中的请求就不需要进行重复处理了
import axios from 'axios'
// create an axios instance
const service = axios.create({
baseURL: process.env.VUE_APP_CXZN_BASE_API, // api 的 base_url
timeout: 5000 // request timeout
})
// response interceptor
// 统一拦截请求反馈
service.interceptors.response.use(
response => {
const res = response.data
const resObj = JSON.parse(res.match(/^callback\((.*)\);$/)[1]);
// console.log(JSON.stringify(res))
response.data = resObj
return response
}, error => {
return Promise.reject(error)
}
)
export default service