手摸手,教你封装一个快捷的Axios

文章介绍了如何在项目中使用Axios进行网络请求,并详细讲解了如何封装一个公用的Axios工具函数,简化每次发起请求的步骤。通过在公用方法文件中导入Axios,然后定义一个request方法,接受请求地址、方法和参数,根据请求方法是GET还是POST来决定数据应放在params还是data中。最后展示了如何使用封装后的request方法进行请求操作。

手摸手,教你封装一个快捷的Axios

一、Axios 基本用法

相信大家对于Aixos都非常熟悉,一个基于promise的网络请求库。

Axios官网

image.png
1.可以使用以下命令将Axios下载到项目中:

npm:

$ npm install axios

yarn:

$ yarn add axios
  1. 在项目的main.js中引入 Axios
import axios from 'axios'
  1. 发起一个请求
axios.post('/user', { firstName: 'Fred', lastName: 'Flintstone' })
    .then(function (response) { 
        console.log(response); 
        })
        // 错误捕捉
    .catch(function (error) { 
        console.log(error); 
    });

这样发一次请求需要写一次请求过于费时,那么我们来封装一个公用的 Axios 工具函数

二、封装 Axios

  1. 首先在公用方法的的js(ts)文件中导入Axios
import axios, { type Method } from 'axios'

2.封装 (注意看代码注释)

// 导出一个 request 方法供使用
// 传入三个参数 1. 请求地址 2.请求方法  3. 请求参数(可空)
export const request  = (url:string,method:Method = 'GET',submitData?:object) => {

// 返回 request 方法,参数传入的参数
  return instance.request({
    url,
    method,
    // [] 代表参数可空 判断是否为 Get 请求
    [method.toUpperCase() === 'GET' ? 'params' :'data']:submitData
  })
}

3.使用

request('user/userList', 'get', { pageTotal:10 } )
    .then((res)=> {
        console.log('请求成功',res)
    })
    .catch((err)=> {
        console.log('请求失败',err)
    })

封装 axios 可以简化代码,提高代码的可维护性。以下是一个简单的封装示例: 首先,创建一个`request.js`文件来封装 axios: ```javascript import axios from 'axios'; // 创建 axios 实例 const request = axios.create({ baseURL: '基础路径', // 设置基础路径 timeout: 5000 // 设置请求超时时间 }); // 请求拦截器 request.interceptors.request.use( config => { // 在发送请求之前做些什么 // 例如添加请求头 config.headers['Authorization'] = 'Bearer token'; return config; }, error => { // 对请求错误做些什么 console.log(error); return Promise.reject(error); } ); // 响应拦截器 request.interceptors.response.use( response => { // 对响应数据做点什么 return response.data; }, error => { // 对响应错误做点什么 console.log(error); return Promise.reject(error); } ); // 封装 get 请求 const get = (url, params) => { return request({ url, method: 'get', params }); }; // 封装 post 请求 const post = (url, data) => { return request({ url, method: 'post', data }); }; export { get, post }; ``` 然后,在项目中使用封装好的 axios: ```javascript import { get, post } from './request'; // 发送 GET 请求 get('/api/data', { id: 1 }) .then(response => { console.log(response); }) .catch(error => { console.log(error); }); // 发送 POST 请求 post('/api/login', { username: 'admin', password: '123456' }) .then(response => { console.log(response); }) .catch(error => { console.log(error); }); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值