vue二次封装接口请求函数,统一管理请求函数,解决反向代理!

vue二次封装接口请求函数

1、二次封装axios

新建utils文件夹,在该文件夹下创建request.js文件

import axios from 'axios'
import qs from 'qs'
//创建实例
const request = axios.create({
    baseURL: '/conner',
    timeout: 5000
})

request.interceptors.request.use(function (config) {
    //解决接口 参数json 格式问题 
    if (config.method === 'post' && config.data) {
        config.data = qs.stringify(config.data)
    }
    return config
}, function (error) {
    return Promise.reject(error)
})

request.interceptors.response.use(function (response) {
    return response
}, function (error) {
    return Promise.reject(error)
})

export default request

ps:qs 是一个增加了一些安全性的查询字符串解析和序列化字符串的库,qs.parse()是将URL解析成对象的形式,qs.stringify()是将对象 序列化成URL的形式,以&进行拼接。

2、创建Api目录,将所有请求函数单独封装成函数导出

新建api文件夹,在该文件夹下创建index.js文件

import request from '@utils/request'

//请求商品分类
const fetchCates = (params = {}) => request.get('/shop/goods/category/all', {
    params
})
//首页轮播图
const fetchHomeBanner = (params = {}) => request.get('/banner/list', {
    params
})
//请求商品列表
// const fetchItems = (params = {}) => request.post('/shop/goods/list/v2', qs.stringify(params))
const fetchItems = (params = {}) => request.post('/shop/goods/list/v2', params)

export {
    fetchCates,
    fetchHomeBanner,
    fetchItems
}

组件中直接引入使用对应的接口函数调用即可,可以传入不同的参数*

3、在vue.config.js中配置反向代理

devServer: {
        port: 4000,
        open: true,
        proxy: {
            '/conner': {
                target: 'url',
                changeOrigin: true,
                pathRewrite: {
                    //路径重写
                    '^/conner': '/conner'
                }
            }
        }
    },
    /*
    
    接口请求 地址 需要以/conner开头 才会反向代理到target源
    路径重写: 定义/conner 真实请求时这个路径携不携带
    重要:真实请求地址是:target + 路径重写的值 + 请求path

    假设路径重写被编程‘’ 则/conner/a 真实请求地址是 url/a 
    
    注意:这里设置/conner开头 则request.js中baseUrl应当设置为/conner,否则反向代理并不成功

    */
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue2封装Axios接口请求二次封装可以让我们在项目中更加方便地使用Axios进行数据请求,同时也可以提高代码的可维护性和复用性。下面是一个简单的Vue2封装Axios接口请求的示例: 1. 安装Axios 在项目中安装Axios,可以使用npm或者yarn进行安装: ```bash npm install axios --save ``` 或者 ```bash yarn add axios ``` 2. 封装Axios 在src目录下新建一个api文件夹,用于存放Axios的封装代码。在api目录下新建一个request.js文件,用于封装Axios的请求方法。 ```javascript import axios from 'axios' // 创建实例 const service = axios.create({ baseURL: process.env.BASE_URL, // 接口的基础路径 timeout: 5000 // 请求超时时间 }) // 请求拦截器 service.interceptors.request.use( config => { // 在请求发送之前做一些处理,比如添加token等 return config }, error => { // 请求错误时做些事 return Promise.reject(error) } ) // 响应拦截器 service.interceptors.response.use( response => { // 对响应数据做一些处理,比如说判断返回的状态码是否正确等 return response.data }, error => { // 响应错误时做些事 return Promise.reject(error) } ) export default service ``` 在上面的代码中,我们使用了Axios的interceptors来拦截请求和响应,并做一些处理。比如说,在请求拦截器中,我们可以在发送请求之前添加token等信息;在响应拦截器中,我们可以对返回的数据进行处理,判断响应状态码是否正确等。 3. 封装API请求 在api目录下新建一个index.js文件,用于封装API请求的方法。我们可以根据实际的业务需求,封装不同的请求方法。 ```javascript import request from './request' export function getUsers () { return request({ url: '/users', method: 'get' }) } export function getUserById (id) { return request({ url: `/users/${id}`, method: 'get' }) } export function createUser (data) { return request({ url: '/users', method: 'post', data }) } // 其他API请求方法... ``` 在上面的代码中,我们使用了封装的request方法来发送请求,同时根据业务需求,定义了不同的请求方法,比如获取用户列表、根据ID获取用户信息、创建用户等。 4. 使用API请求Vue组件中使用API请求非常简单,只需要在组件中引入封装的API请求,然后调用对应的方法即可。 ```javascript import { getUsers } from '@/api' export default { mounted () { this.getUsers() }, methods: { async getUsers () { const { data } = await getUsers() console.log(data) } } } ``` 在上面的代码中,我们在组件中引入了封装的getUsers方法,并在mounted钩子函数中调用该方法来获取用户列表,并将返回的数据打印到控制台上。 这样,我们就完成了Vue2封装Axios接口请求二次封装。通过对Axios进行二次封装,我们可以更加方便地使用Axios进行数据请求,并且也可以提高代码的可维护性和复用性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值