react使用axios以及设置代理(http-proxy-middleware)
前面已经搭建了基本页面,接下来就是react项目中与后台对接
1.安装axios
npm install axios --save
2.在utils文件夹中创建request.js文件(配置axios封装请求方法)
import axios from axios
import {getToken} from ./auth
const instance = axios.create({
baseURL:/api,
timeout:50000
})
instance.defaults.headers = {
Authorization:Basic cGxhdGZvcm1fbGljZW5zZV9hZG1pbjpod192ZGlfbGljZW5zZQ==
}
//请求发出前拦截
instance.interceptors.request.use(function(config){
if(getToken()){
//已经登录的请求头配置,主要用于登录成功后后台返回的token,做权限
config.headers[Content-Type] = application/json;charset=UTF-8;
}else{
// 未登录的请求头配置
}
return config;
},function(error){
return Promise.reject(error)
})
//请求响应拦截
instance.interceptors.response.use(function(response){
return response.data;
},function(error){
return Promise.reject(error)
})
export function get(url,params){
return instance.get(url,{
params
})
}
export function post(url, data){
return instance.post(url,data)
}
3.配置接口文件(services文件夹下管理接口,创建auth.js文件)
import { post } from ../utils/request
export function loginApi(url,data){
return post(url,data)
}
4.配置代理,可以访问到后台的服务器地址
安装依赖
npm install --save-dev http-proxy-middleware
在src文件夹中创建setupProxy.js内容配置如下
const {createProxyMiddleware} = require(http-proxy-middleware);
module.exports = function(app) {
app.use(/api, createProxyMiddleware({
target: ,//后台服务器地址
changeOrigin: true,
pathRewrite: {
^/api: ,
},}))
};
在新版本中已经默认设置代理的文件夹名为setupProxy
到这里所有配置就基本完成,在login文件中发起登录请求就可
//在login中引入
import {loginApi} from ../../services/auth
const onFinish = values => {
loginApi(url,data).then((res)=>{
setToken(res.token) //具体的token设置参考后台接口
props.history.push("/admin")
}).catch((err)=>{
console.log(err)
})
};
