React中Axios结合后端实现GET和POST请求详解
作者:晚风写码时间:2026-10-26 10:27:48浏览:254
本文详细介绍在React项目中如何使用Axios库与后端交互,涵盖GET和POST两种请求方式的具体实现。内容包含参数传递的两种GET方法、POST传递JSONObject的方式,以及Axios的全局配置与封装技巧。此外,针对开发中常见的跨域问题,提供了基于setupProxy.js的解决方案,帮助开发者快速完成前后端数据对接。
在React开发中,利用Axios库与后端服务进行数据交互是常见需求,主要涉及GET和POST两种请求方式。
GET与POST的主要区别在于安全性与效率:POST方法相对更安全,而GET方法通常响应更快。在实际应用中,若需传递单个参数,建议使用GET;若涉及多个参数,则推荐使用POST。
GET请求的第一种实现方式是将参数直接拼接在URL中。
- 前端代码示例
export function getAllSubstationsByUser() {
return axios.get(`/api/integratedEnergy/all/${user}/substations`);
}- 后端接收代码示例
@RequestMapping(value = "/all/{user}/all/substations", method = RequestMethod.GET)
public ResponseEntity<List<Map<String, Object>>> getAllSubstationsByUserAreas(@PathVariable("user") String user) {
String a = user;
// todo 实现方法
}GET请求的第二种实现方式是将参数作为JSON字符串附加在URL末尾。
- 前端代码示例
const params = {
user: 'admin',
};
export function getAllSubstationsByUser(params) {
return axios.get(`/api/integratedEnergy/all/substations`, { params });
}- 后端接收代码示例
@RequestMapping(value = "/all/substations", method = RequestMethod.GET)
public ResponseEntity<List<Map<String, Object>>> getAllSubstationsByUserAreas(@RequestParam(value = "user", defaultValue = "") String user) {
List<Map<String, Object>> mapList = new ArrayList<>();
String a = user;
// todo 实现方法
return new ResponseEntity<>(mapList, HttpStatus.OK);
}POST请求的实现方式,主要用于传递JSONObject类型的参数。
- 前端代码示例
const params = { id: 'admin', name: '用户' }
export function getChildrenDevicesByParent(params) {
return axios.post(`/api/integratedEnergy/all/child/devices`, params);
}- 后端接收代码示例
@RequestMapping(value = "/all/child/devices", method = RequestMethod.POST)
public ResponseEntity<List<Map<String, Object>>> getStorageHistoryData(@RequestBody JSONObject params) {
List<Map<String, Object>> mapList = new ArrayList<>();
String id = params.getString("id").trim());
String name = params.getString("name").trim());
// todo 实现方法
return new ResponseEntity<>(mapList, HttpStatus.OK);
}在React项目中,对Axios进行统一配置是优化请求管理的关键步骤。
对Axios请求进行封装,以便复用和统一管理。
第一步,通过npm安装axios库:npm I axios。
第二步,在项目根目录下创建server.js文件,并编写相关配置代码。
import axios from 'axios'
axios.defaults.baseURL = '' //根据项目自己更改
//一些配置,发起请求和响应可以打印出来查看
axios.interceptors.request.use((config)=>{
//这里是用户登录的时候,将token写入了sessionStorage中了,之后进行其他的接口操作时,进行身份验证。
config.headers.token = localStorage.getItem("cookie");
return config;
})
//在response中
axios.interceptors.response.use(config =>{
return config;
})
const http = {
post:'',
get:'',
getParams:''
}http.post = function (api, data){ // post请求
return new Promise((resolve, reject)=>{
axios.post(api,data).then(response=>{
resolve(response)
})
})
}
http.get = function (api, data){ // get请求
return new Promise((resolve, reject)=>{
axios.get(api,data).then(response=>{
resolve(response)
})
})
}
http.getParams = function (api, param){ //get请求 需要传参
return new Promise((resolve, reject)=>{
axios.get(api, {params: param}).then(response => {
resolve(response.data)
}, err => {
reject(err)
}).catch((error) => {
reject(error)
})
})
}
export default http第三步,在具体的React组件中调用封装好的请求方法。
import http from '../../server'; // 首先引入server文件
http.get('api/接口名称').then(res => {
console.log(res)
}).catch(error => {
console.error(error)
})在发起接口请求时,可能会遇到跨域问题,接下来介绍解决跨域的方法。
第一步,在项目根目录下创建setupProxy.js文件,并编写代理配置代码。
const proxy = require('http-proxy-middleware');
module.exports = function(app) {
app.use(
'/api',
proxy.createProxyMiddleware({
target: 'http://172.21.211.132:8000', // 后台服务地址以及端口号
changeOrigin: true, // 是否跨域
pathRewrite: {
'^/api': '' // 路径重写,用/api代替target里的地址
}
})
);
};总结
以上内容为个人经验分享,旨在提供参考,希望读者能从中受益,并支持本站。
作者最新文章
在 React 或 Vue 项目中集成 p5.js 的实例模式教程
2026-11-03 21:15:55
React 组件怎么连接 dva 状态?connect 高阶函数用法解析
2026-11-03 10:18:46
Fuse.js 模糊搜索实战:从基础配置到 React 实时联想
2026-10-31 10:29:51
详解JS如何解决大数据下滚动页面卡顿问题
2026-10-30 22:20:38
怎么解决 Next.js 开发中的水合不匹配(Hydration Mismatch)错误
2026-10-30 19:14:49







