React 模块化Axios封装请求 统一响应格式 请求统一处理

依赖

javascript 复制代码
npm i  axios

拦截器

utils/request.js

javascript 复制代码
import axios from "axios";

const request = axios.create({
    baseURL: 'https://api.mxin.moe',
    timeout: 1000 * 10
});

// 请求拦截器
request.interceptors.request.use(req => {
    // 使用 headers 来设置 token
    req.headers["token"] = '123455';
    return req;
}, (error) => {
    // 请求错误处理
    return Promise.reject(error);
});

// 响应拦截器
request.interceptors.response.use(res => {
    return res.data; // 只返回响应的 data 部分
}, (error) => {
    // 响应错误处理
    return Promise.reject(error);
});

export default request;

接口模块化

api/user/info.js

javascript 复制代码
import request from "../../utils/request";

export function getUserInfo(params){
    return request({
        url:'/api/v1/mac/vendor',
        method:'get',
        params
    })
}

使用

javascript 复制代码
import {getUserInfo} from "../../api/user/info";
import {useState} from "react";

const Login = () => {
   const [user,setUser] =useState({})


    return (
        <div>
         <button onClick={()=>{
           getUserInfo({
                daxue:'武汉大学'
            }).then(res=>{
                setUser(res)
               console.log(user)
           })
         }}>登录</button>
        </div>
    );
};
export default Login;
相关推荐
晴殇i3 分钟前
用户登录后,Token 到底该存哪里?从懵圈到精通的全方位解析
前端·面试
零一科技11 分钟前
Vue3学习第七课:(Vuex 替代方案)Pinia 状态管理 5 分钟上手
前端·vue.js
吃饺子不吃馅11 分钟前
受够了 create-xxx?我写了一个聚合主流框架的脚手架
前端·面试·架构
Achieve前端实验室20 分钟前
深度解析 JavaScript 作用域与作用域链
前端·javascript·面试
讨厌下雨的天空34 分钟前
缓冲区io
linux·服务器·前端
xhxxx1 小时前
《深入理解 JavaScript 对象:属性命名、访问与遍历的那些细节》
前端·javascript
BBB努力学习程序设计1 小时前
Web App开发基础知识:从零构建现代化Web应用
前端·html
BBB努力学习程序设计1 小时前
使用Bootstrap框架搭建简单页面:快速构建现代化网站
前端·html
西洼工作室1 小时前
CSS响应式布局全攻略
前端·css·响应式布局·栅格系统
用户93816912553601 小时前
VUE3项目配置
前端