欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > next,react封装axios,http请求

next,react封装axios,http请求

2025/6/27 18:46:01 来源:https://blog.csdn.net/qq_34631220/article/details/148476151  浏览:    关键词:next,react封装axios,http请求
import axios from 'axios';//声明一个基础接口变量1
let base_url;
//配置开发环境
if (process.env.NODE_ENV === 'development') {base_url = "http://127.0.0.1/";
}
// 配置生产环境
if (process.env.NODE_ENV === 'production') {base_url = "http://127.0.0.1/";
}
axios.defaults.baseURL = base_url;// 辅助函数:安全获取localStorage值,检测window
const getLocalStorage = () => {if (typeof window !== 'undefined') {return true;}return false;};
// 发送请求前拦载
axios.interceptors.request.use((config) => {var urlsa = config.url;var t = Date.parse(new Date()) / 1000;//时间戳if (urlsa.indexOf("?") != -1) {config.url = config.url + "&datest=" + t} else {config.url = config.url + "?datest=" + t}// 给post请求加参数if (config.data) {// 如果原本请求已经有数据(比如是JSON格式数据等情况)config.data = {...config.data,url: base_url};} else {// 如果原本请求没有数据,创建一个新的对象添加token参数config.data = { url: base_url };}if (getLocalStorage()) {config.headers.token = window.localStorage.getItem("token") ? window.localStorage.getItem("token") : "";config.headers.user = encodeURIComponent(window.localStorage.getItem("username"));}return config
}, (error) => {return Promise.reject(error)
})//发送请求返回拦载
axios.interceptors.response.use(function (response) {// 对响应数据做点什么var data = response.data;//console.log("打印请求回来")if (data.code == 2006) {if (getLocalStorage()) {window.localStorage.clear('username');//删除window.localStorage.clear('token');//删除//配置开发环境if (process.env.NODE_ENV === 'development') {window.location.href = "/login";}// 配置生产环境if (process.env.NODE_ENV === 'production') {window.location.href = "/login";}}return false;}return response;
},function (error) {return Promise.reject(error);// return false;}
);/**
* 封装的请求基类方法
* @param url 地址
* @param method 请求类型
* @param headers 头部信息
* @param data 数据(post用)
* @param params 数据(get用)
* @param success 成功返回
* @param error 失败返回
* @constructor
*/
axios.Request = function ({ url, method = "GET", data = {}, params = {}, success, error }) {let headers = '';if (method == "GET" || method == "get") {headers = 'Content-Type: application/json';} else {headers = 'Content-Type: application/x-www-form-urlencoded';}axios({url: url,headers: headers,method: method,data: data,params: params,}).then(res => {typeof success === "function" && success(res.data);}).catch(e => {typeof error === "function" && error(e);})
}/**
* get封装请求
* @param url 地址
* @param data 数据
* @param success 成功返回
* @param error 失败返回
*/
axios.getRequest = function ({ url, data }, success, error) {axios.Request({ url, method: "GET", params: data, success, error })
}/**
* post请求
* @param url 地址
* @param data 数据
* @param success 成功返回
* @param error 失败返回
*/
axios.postRequest = function ({ url, data }, success, error) {axios.Request({ url, method: "POST", data: data, success, error })
}export default axios;

使用

// use client表示客户端
"use client";
import http from '@/app/comm/http.js';http.post('/dadedadedade666',{id:121}).then((res) => {})
// app/dashboard/layout.tsx
export default function IndexLayout({ children }) {return (<div>{/* 仪表盘专属导航 */}<nav>后台导航</nav>{children} {/* 渲染 /dashboard/users 等子路由内容 */}</div>);
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词