博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
axios 请求拦截封装使用
阅读量:5981 次
发布时间:2019-06-20

本文共 2505 字,大约阅读时间需要 8 分钟。

1. 引入axios 

import axios from 'axios'

2. 引入接口 api 

import API from './api'

接口 api 格式如下

1 {2   "userInfo": {3        "query": "xxx/xxx/userInfo/query",  4        "update": "xxx/xxx/userInfo/update",  5    },6     "xxx": {7         "xxx": "xxx/xxx/xxx/xxx"8    }9 }

3. 配置本地测试和线上的请求域名

  a. node 环境可以用  process.env.NODE_ENV 来判断是不是在本地环境,

  b. 不是node 环境就用你的本地域名判断吧, 127.0.0.1 localhost 什么的

  c. 有配置代理跨域的 devOrigin 配上你的代理名

1 const devOrigin = 'http://test.yuming.com' // 本地开发接口地址3 // 正式环境动态获取域名4 const Host = process.env.NODE_ENV === 'development' ? devOrigin : window.location.origin

4. 配置全局参数

1 axios.defaults.headers['Content-Type'] = 'application/json'   // 全局请求头2 axios.defaults.headers['publicParams'] = '******' // 如果要设置公参也可以放在请求头里3 axios.defaults.baseURL = Host // 配置请求域名第3步拿到的域名4 axios.defaults.timeout = 10000 // 配置超时时间

5. 设置全局的请求拦截和响应拦截

1 // 请求拦截 2 axios.interceptors.request.use(function (config) {  3    // 请求已经到了服务器那边 4    // config 是请求时携带的一些信息可以打印下看看具体的  5 }, function (error) { 6    // 请求出现了错误,一般可能时客户端网络出现问题  7 }) 8  9 // 响应拦截10 axios.interceptors.response.use(function (res) { 11    // 接口返回200这里需要 return 返回的信息,不然请求的时候拿不到服务器返回的信息12 }, function (error) {13    // 响应非200,或者超过了设定的请求时间而超时了14 })

 6. 向外部暴露请求方法

  a. post 请求如下

1 export const httpPost = (url, params, config = {}) => { 2   const [key1, key2] = url.split('/') 3   let urls 4   if (API[key1]) { 5     urls = API[key1][key2] 6   } else { 7     urls = url 8   } 9   let data = {10         xxx: 'xxx' // 这里可以添加公共参数,比如appid什么的11         ...params12       }    13   }14   return axios({15     url: urls,16     method: 'post',17     data: data,18     ...config  19   })20 }

     b. get 请求如下, 这里也可以像post 请求一样使用将请求参数放在第二个参数里,参数格式用json 格式,就是这里配置请求url 的时候需要把json 拼接成 search 格式的参数

1 export const httpGet = (url, params = {}, config = {}) => { 2   const [key1, key2] = url.split('/') 3   let urls 4   if (API[key1]) { 5     urls = API[key1][key2] 6   } else { 7     urls = urlKeys 8   } 9   axios({10     url: urls,11     params: {12        ...params13     }  14     method: 'get',15     ...config16   })17 }

 

7. 页面发起请求

a. 支持 es6

1 async function getUserInfo () { // 可以使用 try catch 拿到请求出错信息2    let res = await httpGet('userInfo/query', {userId: 123})  // get 请求3    let res2 = await httpPost('userInfo/update', { // post 请求4       name: 'haha'5    }) 6 }

b. promise 写法

1 httpPost('userInfo/update', {2   name: 'haha'3 }).then(result => {4   // result   响应拦截返回的信息5 }).catch(error => {6    // 请求出错7 })

 

以上

 

转载于:https://www.cnblogs.com/blackbentel/p/10761173.html

你可能感兴趣的文章
Java 程序中的多线程(四)
查看>>
【NOI2018模拟5】三角剖分Bsh
查看>>
redis安装使用
查看>>
git 几款好用的客户端工具
查看>>
拍拍贷月还款的理解
查看>>
【jBox】2.3正式版 多功能jQuery对话框插件下载及常见使用问题解答
查看>>
如何添加localizable.strings本地化
查看>>
css 禁用移动端部分特性
查看>>
安卓OpenGL入门
查看>>
SpeechSynthesizer/WaveHeader 存在严重的内存泄漏
查看>>
Oracle安装后忘记用户名或密码+创建新登陆用户
查看>>
悬浮固定
查看>>
解决Error: could not open ‘……\jre7\lib\i386\jvm.cfg'问题
查看>>
EZOJ #78
查看>>
找工作总结
查看>>
顺序点初解
查看>>
Java 实现Md5算法
查看>>
第二次作业
查看>>
我见过最好的vsftpd配置教程(转)
查看>>
Spring MVC helloWorld中遇到的问题及解决办法
查看>>