对axios进行简单的封装,这里使用的框架是react
安装react脚手架
1
| npm install -g create-react-app
|
使用react脚手架创建项目
1
| create-react-app react-demo
|
安装需要的包
1 2
| npm i axios //http库 npm install http-proxy-middleware -D //proxy代理 接口跨域问题
|
接下来
配置代理
新建配置文件/src/setupProxy.js
1 2 3 4 5 6 7 8 9 10 11 12
| const { createProxyMiddleware } = require('http-proxy-middleware');
module.exports = function (app) { app.use(createProxyMiddleware('/api', { target : 'http://127.0.0.1:3000', changeOrigin : true, ws: true, pathRewrite : { '^/api' : '' }, })); };
|
封装axios
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| import axios from 'axios'
const baseURL = process.env.NODE_ENV=="development" ? 'http://127.0.0.1:4000' : '在线地址'
const ajax = axios.create({ baseURL, timeout: 1000 * 60 })
ajax.interceptors.request.use(config => { config.headers.token = window.localStorage.getItem('token') || window.sessionStorage.getItem('token'); return config }, error => { return error; })
ajax.interceptors.response.use(response => { return response.data })
export default ajax
|
测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| import logo from './logo.svg'; import './App.css'; import ajax from './libs/ajax'
function App() { ajax.get('/api/hero/get').then(function (res) { console.log(res,'res'); }) return ( <div className="App"> hello axios </div> ); }
export default App;
|
最后
这是一个简单的demo,可以单独抽离出api配置文件并对post和get方法进一步封装。