react4:网络请求

news/2024/11/28 4:44:01/

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] : ' '

开发环境下:

 

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

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

二次封装改

代理改

其他位置不需要改了

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

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

 

npm run build 打包:::

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


http://www.ppmy.cn/news/40253.html

相关文章

USB土壤参数检测仪丨便捷、全面、耐用

土壤水分是农业科学灌溉的基础,无论是植物科学研究、还是农业增产增收,土壤中的水分、温度、电导率、酸碱度都十分重要。 但现在的问题是“如何迅速、便捷地获取土壤参数信息”? USB土壤参数检测仪 就能实现以上目的 ↓ ↓ ↓ USB土壤参数…

【云原生】k8s Service 实现服务发现和负载均衡

文章目录前言Service 介绍Service 的四种类型及使用方式Service 的定义和使用通过命令创建服务查看创建的服务情况不指定 Selectors 的服务Headless 服务Service 工作原理及原理图Ingress 讲解集群外部如何访问服务总结前言 在容器编排系统中,如 Kubernetes&#x…

java微服务架构---基础环境搭建

1.Java概述 人与人之间的沟通需要使用互相能听得懂的语言。同理,与计算机沟通也需要使用计算机能懂的语言。我们接下来要学习的Java语言便是众多语言中的一种。 Java语言是美国Sun公司(已被Oracle收购)的詹姆斯高斯林(Java之父&…

MIUI14+安卓13 Root教程 小米10 小米11 小米12 小米13 红米

MIUI14安卓13 Root教程 测试使用小米10 miui14稳定版 (其他手机流程一样) 1. 确保手机已完成 BL 解锁。这里来申请解锁 2. 手机下载并且安装Magisk 下载地址 3. 去下载当前版本刷机包 小米 10 (umi) 国行版 线刷、卡刷包 ​ 网页上ctrlf 搜索 miui1…

ORACLE EBS 系统架构与应用实践(一)

一、从ERP到EBS 从上世纪70年代晚期的物料需求计划MRP(Material Requirements Planning)到80年代的MRP II,再到90年代的企业资源计划ERP(Enterprise Resource Planning),企业管理软件(或曰应用…

restTemplate发送multipartFile和String混合参数及接收

最近有个任务是将文件上传到服务器后再发送到另一台服务器接收&#xff0c;作为一个代码表述为主的程序员&#xff0c;文字表达能力有限&#xff0c;就上代码吧~~ 前端代码片段 <table><tbody><tr><td>需要上传服务器的文件</td><td><…

JavaSE基础(17) static 关键字

static 关键字 静态&#xff08;static&#xff09;可以修饰属性和方法。 称为静态属性&#xff08;类属性&#xff09;、静态方法&#xff08;类方法&#xff09;。 静态成员是全类所有对象共享的成员。 在全类中只有一份&#xff0c;不因创建多个对象而产生多份。 不必创…

博客文章效果

学习风宇blog md文档转html&#xff08;markdown-it的使用&#xff09;语法高亮、行号、一键复制toc生成目录sticky粘性定位 <style lang"scss"> import url(//at.alicdn.com/t/c/font_4004562_9v94jccafmc.css); import url(https://fonts.font.im/css?fam…