原生js Vue React axios封装api

3 篇文章 0 订阅
1 篇文章 0 订阅

1.废话不多说直接上代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>axios封装</title>
</head>
<body></body>
</html>
<script src="https://cdn.bootcdn.net/ajax/libs/axios/0.20.0-0/axios.min.js"></script>
<script>
    const service = axios.create({
        // baseURL: 'https://newbookstoreapi.shuqireader.com/bookstore/miniapp',
        timeout: 99999,
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
        },
    })
    // 请求拦截器
    service.interceptors.request.use(
        config => {
         
            let token = ''; // document.cookie.token
            if(token){
                config.headers['Authorization'] = token
            }
            return config
        },
        error => {
            return Promise.reject(error)
        }
    )
    // 响应拦截器
    service.interceptors.response.use(
        response => {
            const res = response.data
            if (res.code != 200 && res.code) {
                console.log('失败');
                return Promise.reject(new Error(res.message || 'Error'))
            } else {
                return res
            }
        },
        error => {
            //  如果想提示 后台返回message 参数error.response.data.message
            if (error && error.response) {
                switch (error.response.status) {
                    case 400:
                        console.log('请求错误')
                        break
                    case 401:
                        console.log('权限不足,请重新登率')
                        break
                    case 403:
                        console.log('拒绝访问')
                        break

                    case 404:
                        console.log('请求地址出错', error.response.data.message)
                        break

                    case 408:
                        console.log('请求超时')
                        break

                    case 500:
                        console.log('微服务故障, 请稍后再试')
                        break

                    case 501:
                        console.log('服务未实现')
                        break

                    case 502:
                        console.log('网关错误')
                        break

                    case 503:
                        console.log('服务不可用')
                        break

                    case 504:
                        console.log('网关超时')
                        break

                    case 505:
                        console.log('HTTP版本不受支持')
                        break
                    default:
                }
            }
            return Promise.reject(error)
        }
    )

    service({
        url: 'https://newbookstoreapi.shuqireader.com/bookstore/miniap',//miniapp
        method: 'post',
        data: {
            authCode: "xxx",
            channelId: "xxx",
            osName: "xxx",
            osVer: "xxx",
            page: "home",
            platform: 0,
            userId: 8000000
        },
    })
</script>

vue React :export default service导出。import 导入就可以了。范式就要你们自行决定了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旭阳的头发呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值