react 封装请求axios,直接调用即可

embedded/2024/10/19 0:21:43/

概要

我们在开发项目的时候,常常会遇到接口请求的问题的,若我们不进行接口的统一管理,代码开发不仅多而且很麻烦容易出错,也不利于项目的维护。下面我们一下学习下react项目中将如何封装请求,也从另一个方面中少写一些代码。哈哈

封装流程

1、在src目录下创建文件request

2、在文件request中创建api.ts和service.ts文件(默认ts格式类型)

3、在文件中写下封装代码

api.ts(主要写api请求接口)


export const LoginByAccount="/auth/login_weixin_by_account" //账号密码登录
export const LoginVcode="/login/vcode" //获取微信session

service.ts(axios请求封装)

//处理请求拦截和响应拦截
//引入
import axios  from "axios";//判断一下用户是否登录
function getToken(){ //获取tokenreturn sessionStorage.getItem('token')
}//3创建axios实例
let httpClient = axios.create({baseURL:"/api",timeout:6000,withCredentials:true
})//4创建请求拦截和响应拦截
httpClient.interceptors.request.use(//成功config=>{if(getToken()){config.headers['token']=getToken();}//返回return config},//错误err=>{return Promise.reject(err)})//响应拦截httpClient.interceptors.response.use(//成功response=>{let res = response.dataif(res.code=='401'){window.location.href='/login'}return Promise.resolve(res)},//错误err=>{return Promise.reject(err)})// 封装get请求
export const GET = (url:any, config = {}) => httpClient.get(url, config);// 封装post请求
export const POST = (url:any, data = {}, config = {}) => httpClient.post(url, data, config);// 封装put请求
export const PUT = (url:any, data = {}, config = {}) => httpClient.put(url, data, config);// 封装delete请求
export const DEL = (url:any, config = {}) => httpClient.delete(url, config);

4、页面的调用

import {POST} from "@/request/service"
import {LoginByAccount} from "@/request/api"const getCaptchaImg = async ()=>{//做验证码的请求GET(LoginVcode,'').then((res:any)=>{console.log(res);})
}

小结

实现起来比较简单,需要的小伙伴可以直接拿去用,在自己的项目上进行兼容调试即可

需要全部项目调试的源码可以前往

GitHub - yididid/react-manage: 主要运用了React + TypeScript + Vite + toolkit + redux技术来开发商品管理后台,开发了路由、接口请求(包含跨域解决)等基本功能的开发,喜欢的小伙伴可以拿去


http://www.ppmy.cn/embedded/17022.html

相关文章

pip下载包opencv出错(报错failed building wheel for opencv-python解决方法)

文章目录 1 报错2 原因3 解决方法参考 1 报错 ERROR: Could not build wheels for opencv-python, which is required to install pypr2 原因 版本不兼容的问题,当使用pip install opencv-python命令安装的是最新版本,当前python版本不支持。需要安装当前版本pyth…

WPF2022终结版系列课程笔记 1 WPF 基本布局

本笔记为B站 微软系列技术教程 WPF项目实战合集(2022终结版) 项目记录 WPF 基本布局 WPF布局原则 一个窗口中只能包含一个元素 不应显示设置元素尺寸 不应使用坐标设置元素的位置 可以嵌套布局容器 WPF布局容器 StackPanel: 水平或垂直排列元素、Orientation属性分别: Hor…

03-JAVA设计模式-观察者模式

观察者模式 什么是观察者模式 Java中的观察者模式是一种常见的设计模式,它允许对象(观察者)订阅另一个对象(被观察者)的状态变化,并在状态变化时自动得到通知。 核心: 观察者模式主要用于1&a…

【Qt常用控件】—— 多元素控件

目录 1.1 List Widget 1.2 Table Widget 1.3 Tree Widget 1.4 小结 Qt 中提供的多元素控件有: QListWidget QListView QTableWidget QTableView QTreeWidget QTreeView xxWidget 和 xxView 之间的区别 以 QTableWidget 和 QTableView 为例: QTableView 是基于…

学习 Rust 的第十一天:如何使用模块

大家好, 今天是学习 Rust 的第 11 天,今天我们来看看 Rust 的模块系统。我们可以利用这个系统来管理不断增长的项目,并跟踪各个模块的存储位置。 介绍 在 Rust 中,模块系统通过将相关函数、类型和其他项目分组来帮助保持代码组…

less和scss循环生成margin和padding

less // 循环生成 margin padding .padding(n, i: 1) when (i < n) {.pt-{i} {padding-top: i 0px;}.pr-{i} {padding-right: i 0px;}.pb-{i} {padding-bottom: i 0px;}.pl-{i} {padding-left: i 0px;}.p-{i} {padding: i 0px;}.padding(n, (i 1)); }.margin(n, i: 1…

维护网络安全的途径有哪些?

网络安全是各个网络企业中的重中之重&#xff0c;维护网络安全是确保个人、组织的信息和资产可以在网络环境中得到保护的重要任务&#xff0c;以下是常见的维护网络安全的多种途径&#xff1a; 对于网络安全的维护&#xff0c;用户和企业可以设置一些比较复杂且独特的密码&…

深度学习基础之《TensorFlow框架(13)—二进制数据》

一、CIFAR-10二进制数据集介绍 1、CIFAR-10数据集 CIFAR-10数据集由10个类别的60000个32x32彩色图像组成&#xff0c;每个类别有6000个图像。有50000个训练图像和10000个测试图像 2、数据集分为五个训练批次和一个测试批次&#xff0c;每个批次有10000个图像 3、data_batch_…