当前位置: 首页 > article >正文

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>);
}
http://www.lryc.cn/news/2404911.html

相关文章:

  • 元图CAD:一键解锁PDF转CAD,OCR技术赋能高效转换
  • Android 平台RTSP/RTMP播放器SDK接入说明
  • Nodejs工程化实践:构建高性能前后端交互系统
  • STM32什么是寄存器
  • Linux 的 find 命令使用指南
  • 第六个微信小程序:教师工具集
  • 记录一个用了很久的git提交到github和gitee比较方便的方法
  • Qt Qml模块功能及功能解析
  • 前端八股之JS的原型链
  • NLP学习路线图(二十九):BERT及其变体
  • 机器翻译模型笔记
  • Ref vs. Reactive:Vue 3 响应式变量的最佳选择指南
  • 让视觉基础模型(VFMs)像大语言模型(LLMs)一样“会思考”​
  • 现代前端框架的发展与演进
  • 【LLM-Agent】智能体的记忆缓存设计
  • 一起学Spring AI:核心概念
  • Oracle业务用户的存储过程个数及行数统计
  • PicSharp(图片压缩工具) v1.1.6
  • 前端文件下载常用方式详解
  • 【DAY42】Grad-CAM与Hook函数
  • 如何生成和制作PDF文件
  • 【K8S系列】Kubernetes 中 Pod(Java服务)启动缓慢的深度分析与解决方案
  • 【Java学习笔记】StringBuilder类(重点)
  • JavaScript ES6 解构:优雅提取数据的艺术
  • iview Switch Tabs TabPane 使用提示Maximum call stack size exceeded堆栈溢出
  • 基于Halcon深度学习之分类
  • 零基础在实践中学习网络安全-皮卡丘靶场(第十五期-URL重定向模块)
  • 技巧小结:根据寄存器手册写常用外设的驱动程序
  • 设计模式(代理设计模式)
  • 从代码学习深度强化学习 - 初探强化学习 PyTorch版