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

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.lqws.cn/news/187795.html

相关文章:

  • Webhook 配置备忘
  • 浏览器工作原理06 [#]渲染流程(下):HTML、CSS和JavaScript是如何变成页面的
  • 基于Selenium+Python的web自动化测试框架
  • C++.OpenGL (3/64)着色器(Shader)深入
  • ceph 脚本,用于计算 rbd 文件存放 OSD 方法
  • 在UI界面内修改了对象名,在#include “ui_mainwindow.h“没更新
  • MySQL 索引优化(Explain执行计划) 详细讲解
  • 阿里140 补环境日志
  • JS-- for...in和for...of
  • IDEA 中 Undo Commit,Revert Commit,Drop Commit区别
  • 从微积分到集合论(1630-1910)(历史简介)——第4章——现代积分理论的起源(Thomas Hawkins)
  • Python | Windows11通过离线方式安装pyserial
  • idea中 maven 本地仓库有jar包,但还是找不到,解决打包失败和无法引用的问题———————————————— 版权声明:本文为博
  • 艾体宝案例丨Transavia如何借助LambdaTest测试平台高效起飞?
  • 基于深度强化学习的Scrapy-Redis分布式爬虫动态调度策略研究
  • maven微服务${revision}依赖打包无法识别
  • Xsens-AAA工作室品质,为动画师准备
  • 深入浅出多路归并:原理、实现与实战案例解析
  • Blaster - Multiplayer P145-P152: 多种武器
  • 使用docker 安装Redis 带配置文件(x86和arm)版本
  • Spring 团队详解:AOT 缓存实践、JSpecify 空指针安全与支持策略升级
  • ADI的BF609双核DSP怎么做开发,我来说一说(五)LAN口测试
  • 汽车免拆诊断案例 | 2010款捷豹XFL车制动警告灯、DSC警告灯异常点亮
  • LINUX 66 FTP 2 ;FTP被动模式;FTP客户服务系统
  • [蓝桥杯]搭积木
  • 【Zephyr 系列 11】使用 NVS 实现 BLE 参数持久化:掉电不丢配置,开机自动加载
  • [c#]判定当前软件是否用管理员权限打开
  • libGL error
  • CVPR 2025 | 港中文 MMLab 提出文生图模型 T2I-R1,文生图进入R1时刻!
  • [论文阅读] 人工智能 | 大语言模型计划生成的新范式:基于过程挖掘的技能学习