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>
);
}