react4:配置网络请求axios --- 配置@路径别名

news2024/9/21 12:27:10

1. axios 请求安装:npm i axios

axios 二次封装:配置,拦截器等应用 在:utils文件夹下request.js中配置

//utils文件夹下request.js中配置

//导入 axios
import axios from "axios";

//实例化axios
var service  = axios.create({
    timeout: 10*1000,
    baseURL:''   //基准路径,可以省略重复前缀
})

//设置请求拦截器
service.interceptors.request.use(
    (config)=>{
        //添加请求头参数
        config.headers['token'] = '';
        return config;
    },
    (error)=>{
        return Promise.reject(error)
    }
)
//设置响应拦截器
service.interceptors.response.use(
    (res)=>{
        return res;
    },
    (error)=>{
        if( error.response.status == 401 ){
            alert('登陆过期,重新登录!');
        }else if( error.response.status == 404 ){
            alert('访问路径有误!');
        }else if( error.response.status == 500 ){
            alert('服务器内部错误!');
        }else if( error.response.status == 503 ){
            alert('服务器不可用!');
        }
        return Promise.reject(error)
    }
)

export default service;

2. 反向代理(了解)配置代理:setupProxy.js中配置

我们通过 ajax 请求数据的时候存在同源策略问题,因为协议、域名、端口中有不同,就会导致产生跨域问题,而反向代理是我们开发中用的很多的一种解决跨域问题的方式

有统一前缀:

// setupProxy.js文件中配置
const { createProxyMiddleware: proxy } = require("http-proxy-middleware");

module.exports = (app) => {
    app.use(
        "/api", //相同的前缀
        proxy({
            // 此处的端口号要与后期数据请求的数据端一致
            target: "http://180.76.99.14",
            changeOrigin: true,
        })
    );
};

没有统一前缀: 所以要要求后端每个接口加相同前缀啊,省事

升级:虚拟前缀 路径重写 解决后端给的接口没有前缀统一:简单正则

普通环境下:[^/api] : ' '

开发环境下:

            // pathRewrite: { //路径重写
            //     ['^' + process.env.REACT_APP_BASE_API]: '',
            // },

3.配置下请求管理器:api文件夹下 index.js中配置

请求管理器现在就可以发请求了。再做个请求管理器,更加好管理请求,分而治之。

//api文件夹下 index.js中配置

//导入二次封装的axios实例

import service from '../utils/request'

//一个接口封装成一个函数
export function banner_list( payload = {} ){
    return service.get('/api/banner/list', { params: payload } );
}
export function user_login( payload = {} ){
    return service.post('/api/user/login',  payload  );
}

//...

4.发送请求:在组件完成挂载 钩子函数中发送请求:componentDidMount()

  再升级:许多独立的

import * as admin from './admin'
import * as home from './home'
import * as xss from './xss' //xss 的独享路由 service.xss 请求
export default {
    admin,
    home,
    xss,
}

升级(成为完成的项目了):::开发环境下,生产环境下,测试环境下,配置完成

无须改源代码

  4.开发环境下:.env.development 使环境变量的配置文件。无须引入,自动读取:可以不用写前缀:eg:/api

配置:默认隐藏文件,安全性更高(开发者看)

二次封装改 request

代理改

其他位置不需要改了

4.生产环境下:.env.production  代理会不起作用,所以:打包前配置。 其他不要动

静态资源打包之前改变绝对路径

 

这所有的 前缀 eg:/api 可以删除了

npm run build 打包:::

4.测试环境下:.env.test

配置@路径别名,让脚手架工具能识别@:

安装到开发环境:

npm i -D @craco/craco

//1.安装包 :安装到开发环境

npm i -D @craco/craco

//2.在项目根目录下,创建配置文件:craco.config.js。
//在配置文件中就可以做自定义的修改了。
//craco.config.js 中配置路径别名

const path = require('path')
module.exports = {
webpack: {
alias: {
'@': path.join(__dirname, 'src')
}
}
}

//3.修改 package.json 中的脚本命令
//package.json 中:将 start/build/test 三个命令修改为 craco 方式

"scripts": {
"start": "craco start",
"build": "craco build",
"test": "craco test",
"eject": "react-scripts eject"
},

//4.配置tsconfig.json中配置可以解决TS识别不了 @/ 路径爆红

    // 在 compilerOptions 内添加如下配置
    "baseUrl": ".",
    "paths": {
      // 注意哦,是 "@/*" 后面的 "/*" 不能少
      "@/*": [
        "src/*"
      ]
    },

//5. 重启项目,让配置生效

//6. 在代码中,就可以通过 @ 来表示 src 目录的绝对路径

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/416938.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QT5学习教程一——Hello World例子

一、打开 Qt Creator -文件-新建文件或项目-Application-Qt Widgets Application-选择,如图 1.1 图 1.2 将项目放到指定目录,便于管理。单击[下一步] 选择构建的环境,可以根据自己的配置来选择,本例子选择MSVC2015。MSVC是指微软的…

JAVA阶段考内容知识点的梳理

前言:这些都是很基本的,还有很多没有写出来,重点在于编程序理解。 目录 第一章概述 课堂总结 相关习题 第二章:语言基础 课堂总结 相关习题 第三章:类和对象 内容总结 相关习题 第四章:类的派生与…

【Linux】网络编程套接字(下)

🎇Linux: 博客主页:一起去看日落吗分享博主的在Linux中学习到的知识和遇到的问题博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话: 看似不起波澜的日复一日,一定会在某一天让你看见坚持…

【三十天精通 Vue 3】 第十天 Vue 状态管理详解

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: 三十天精通 Vue 3 文章目录引言一、Vue 3 状态管理概述1.1 状态管理的概念1.2 状态管理的作用…

Spark基础 - 名词汇总及集群模式概述

原文地址: Spark基础 - 名词汇总及集群模式概述 本文档内容参考Spark官方文档:Cluster Mode Overview 一. Glossary(术语) TermMeaningcommentApplicationUser program built on Spark. Consists of a driver program and executors on the cluster.…

Springboot应用整合Sentinel实现限流、熔断、降级笔记

可以使用官方的sentinel 也可使用进行持久化改造后的Sentinel ,本文基于此进行记录。Sentinel持久化到Nacoshttps://blog.csdn.net/chenjian723122704/article/details/130098896 Sentinel版本为 1.8.6 Nacos版本为 2.2.0 关于网关限流、限流和熔断,我…

【Step1】Linux Kernel -基础

《Linux内核设计与实现.第3版》1-2章学习笔记 1. 获取内核源码 http://www.kernel.org 2. 内核版本命名规则 内核的版本号主要有四个数字组成。 从版本号: 偶数表示稳定版(可用于企业级环境),奇数表示开发版; 修订…

ack应答机制

ACK在 Kafka 中,ack(Acknowledgment)机制是指用于确认生产者发送的消息已经被成功写入到 Kafka 分区中的一种机制。生产者可以通过 ack 参数来控制这个机制,以便根据自己的需求进行设置。 ACK应答级别0:生产者发送过来…

手机号码归属地 API 实现个性化推荐的思路分析

前言 随着移动互联网和智能手机的普及,越来越多的人使用手机上网和购物,移动营销已成为企业获取用户和提升品牌知名度的重要手段。手机号码归属地 API 作为移动营销的关键工具,具有广阔的应用前景。 本文将探讨如何利用手机号码归属地 API …

IDEA配置MAVEN_OPTS

IDEA配置MAVEN_OPTS​ 解决问题 maven MAVEN_OPTS设置 maven编译优化 maven编译速度慢 maven打包编译很慢 maven多线程编译打包 IDEA Maven配置教程​​测试环境:Win10(64位) i7-7700HQ 16GB​​ 参考文章: ​​ ​JVM参数MetaspaceSize的误解​​ Java HotSpot™ 64-Bit Ser…

【AI浪潮下的挑战和机遇】许多职业即将消失,AI 即将战胜人类了吗?

文章目录前言一、人类科技发展史二、 AI浪潮下的挑战1. 数据安全和隐私保护问题2. 带来新的伦理和道德问题3. 版权和知识产权问题三、对传统行业和就业的冲击1.传统文本编辑行业受到冲击2.就业岗位的变化3.工作流程的变化4.创意版权问题四、AI浪潮下的机遇1.提高效率和创意性2.…

【软考备战·希赛网每日一练】2023年4月12日

文章目录一、今日成绩二、错题总结第一题三、知识查缺题目及解析来源:2023年04月12日软件设计师每日一练 一、今日成绩 二、错题总结 第一题 解析: 依据题目画出PERT图如下: 关键路径长度(从起点到终点的路径中最长的一条&#x…

使用MybatisPlus时注意点的记录

在 MyBatis-Plus 中,默认情况下,实体类的主键属性名必须为 "id",如果实体类主键属性名为 其他比如"nbid",则需要进行显式的用FileId配置或者在.XML中配置。 在使用MybatisPlus时,如果主键名是id 实体类属性…

Django REST Framework(DRF)框架之视图类(视图基类、Mixin扩展类、子类视图)

DRF框架之视图类的使用视图类概述视图基类Mixin扩展类子类视图类视图基类APIViewGenericAPIViewMixin扩展类ListModelMixinCreateModelMixinRetrieveModelMixinUpdateModelMixinDestroyModelMixin子类视图ListAPIViewCreateAPIViewRetrieveAPIViewDestoryAPIViewUpdateAPIViewL…

联想集团ESG与社会价值论坛召开,首次发布《联想集团2022社会价值报告》

对企业而言,ESG不再是选择题,而是必答题。 联想集团是ESG的先行者、领军者。 2023年4月11日,“联想集团ESG与社会价值论坛暨《联想集团2022社会价值报告》发布会”在京召开,会议由中国社会责任百人论坛、联想集团联合主办&#xf…

【图像】协议:常见的图像格式协议对比

1. 背景 不知不觉已经大半年没有写博客了。换了工作之后突然变忙了许多,紧张的项目节点一个接一个,高优先级的事一件接一件,让人兴奋的同时也变得很多时候没有时间去复盘去反思去沉淀。 最近在整理产品的feature list,各种各样的…

Yum方式安装Nginx

前言:使用Nginx源码进行安装过程比较繁琐,需要提前下载安装GCC编译器、PCRE兼容正则表达式库、zlib压缩库和OpenSSL安全通信的软件库包,然后才能进行Nginx的安装。采用Yum最简单的安装方式能自动解决这些安装依赖,默认情况Centos7…

C++面试指南——类常用知识点概念总结

构造函数 构造函数可以抛出异常,可以重载,如果在实例化时在类名后面加个括号,只是创建了一个匿名的对象。构造不能是虚函数,因为此时虚函数表还没有初始化。new对象会调解构造函数。没有定义拷贝构造时,IDE会自动生成…

关于编译的重要概念总结

文章目录什么是GNU什么是GCC / Ggcc / g编译的四个阶段gcc和g的主要区别MinGW-w64C语言版本C 98C 11C 14C 17C 20Makefilecmake回想初学编程的时候,大部分人都是从C语言开始学起的,除了一些常见的语法和思想,一些基础知识常常被人们忽略&…

智能汽车进入3.0时代,双目立体视觉「打通」智驾与底盘

每一次软硬件技术更迭,都在重构智能化。 2016年7月,上汽集团与阿里巴巴合作开发的互联网汽车荣威RX5正式上市,这被视为中国乘用车市场首次规模化引入互联网生态,第一次在软件层面实现对传统燃油车的升级。几个月后,英特…