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

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

作者: 7b7d23d16ab5 | 来源:发表于2020-01-14 11:46 被阅读0次

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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/mjnoactx.html