如果后台反馈API的内容中存在类似callback({...})

2020-01-14  本文已影响0人  7b7d23d16ab5

如果后台反馈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

上一篇下一篇

猜你喜欢

热点阅读