封装axios(简约版),直接cv就可以使用

3 篇文章 0 订阅

我之前写过一篇axios封装的文章,这次axios的封装是非常精简的

首先下载axios的依赖包

npm i axios --save-dev

在项目中src文件夹下创建uitils文件夹,然后创建request.js文件(当然文件名随便取)

接下来直接cv就可以啦

import axios from 'axios'

// 创建一个 axios 实例
const service = axios.create({
    baseURL: '/dev', // 所有的请求地址前缀部分,这里是做了跨域处理的
    timeout: 60000, // 请求超时时间毫秒
    withCredentials: true, // 异步请求携带cookie
    headers: {
        // 设置后端需要的传参类型
        'Content-Type': 'application/json',
        'token': 'your token',
        'X-Requested-With': 'XMLHttpRequest',
    },
})

// 添加请求拦截器
service.interceptors.request.use(
    function (config) {
        // 在发送请求之前做些什么
        return config
    },
    function (error) {
        // 对请求错误做些什么
        console.log(error)
        return Promise.reject(error)
    }
)

// 添加响应拦截器
service.interceptors.response.use(
    function (response) {
        console.log('相应消息', response)
        // 2xx 范围内的状态码都会触发该函数。
        // 对响应数据做点什么
        // dataAxios 是 axios 返回数据中的 data
        const dataAxios = response.data
        // 这个状态码是和后端约定的
        const code = dataAxios.reset
        return dataAxios
    },
    function (error) {
        // 超出 2xx 范围的状态码都会触发该函数。
        // 对响应错误做点什么
        console.log(error)
        return Promise.reject(error)
    }
)

export default service

可以发现baseURL地址是做了跨域的,我的跨域配置文件(vue.config.js)如下

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  // 配置服务器,添加代理选项
  // devServer :开发 服务器
  devServer: {
    //proxy: 代理
    proxy: {
      // 必须重启服务器, 配置才能生效
      // 如果请求地址是 /douyu 开头的, 则被当前代理处理
      '/dev': {
        // target: 由服务器帮助到此域名中请求数据 -- 代理
        target: 'http://www.xxxxxx.com:9999/',
        changeOrigin: true, //代表 域名不同,需要启动代理模式
        // 路径重写: 真正发送的请求地址中, 要去掉 /douyu 开头
        pathRewrite: {
          // ^ :正则中的 字符串开头 的意思
          '^/dev': '',
          // 如果不替换则发送的请求地址如下: 会多余一个 /douyu
          // https://m.douyu.com/douyu/api/room/list?page=1
        },
      },
    },
  },
})

创建一个products.js文件,这个文件中存放的是商品信息相关的接口

import requst from './requst'
// 商品列表接口
export function getProduct() {
    return requst({
        url: 'data/product/index.php',
        methods: "get"
    })
}
// 商品详情接口
export function getDetails(id) {
    return requst({
        url: 'data/product/details.php?lid=' + id,
        method: 'get',
    })
}
//假如有一个用户注册接口
export function login(data) {
    return requst({
        url: 'data/user/register.php',
        method: 'post',
        data
    })
}

在对应的页面中调用已经封装好的接口

<script>
// 先引入对应的接口
import { getProduct, getDetails } from '../utils/products.js'
export default {
  components: { Header, SideMenu },
  created() {
    this.getDatas()
  },
  methods: {
    getDatas() {
      getProduct()
        .then(res => {
          console.log('res', res)
        })
        .catch(err => {
          console.log('错误', err)
        })
      this.getDetailsMethod()
    },
    getDetailsMethod() {
      getDetails(1)
        .then(res => {
          console.log('详情res', res)
        })
        .catch(err => {
          console.log('详情err', err)
        })
    },
  },
}
</script>

这样就可以啦,非常的简便哦

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

多看书少吃饭

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

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

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

打赏作者

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

抵扣说明:

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

余额充值