web建站教程
  1. 首页
  2. vuejs
  3. js
  4. 好玩
  5. seo教程
  6. 前端知识
  7. 百度echarts
  8. 更多
    php入门
    nodejs
    mockjs
    reactjs
    mysql
    wordpress
    织梦cms
    帝国cms
    git教程
    IT知识
    模板大全
    休息站

react如何实现axios拦截功能(附代码介绍)

978 ℃
           

react如何实现axios拦截功能,下面web建站小编给大家详细介绍一下实现代码!

安装axios

npm i axios --save

npm i react-cookie --save

创建axios实例,在这里可以设置请求的默认配置

let baseUrl = '/api'
const instance = axios.create({
  timeout: 20000, // 设置超时时间10s
  // baseURL: baseUrl // 根据自己配置的反向代理去设置不同环境的baseUrl
})

设置post请求头

instance.defaults.headers.post['Content-Type'] = 'application/json'

添加请求拦截器

instance.interceptors.request.use(config => {
   var token = cookie.load('token')//获取本地存储的token
// 判断cookie有没有存储token,有的话加入到请求头里
  if (token) {
    config.headers['token'] = token//在请求头中加入token
  }
// 如果还需要在请求头内添加其他内容可以自己添加 [] 内为自定义的字段名 = 后的内容为字段名对应的内容
   // config.headers['api'] = api
   return config
}, error => {
   // 对请求错误做些什么
   return Promise.reject(error)
})

添加响应拦截器

instance.interceptors.response.use(response => {
  if (response.statusText === 'OK') {
    return Promise.resolve(response.data)
  } else {
    return Promise.reject(response.data.msg)
  }
}, error => {
   // 请求报错的回调可以和后端协调返回什么状态码,在此根据对应状态码进行对应处理
    if (error.response) {
   // 如401我就让用户返回登录页
	  if (error.response.status === 401) {
		this.props.history.push('/login');
	  }
	  return Promise.reject(error)
	} else {
	   return Promise.reject('请求超时, 请刷新重试')
	}
})

统一封装get请求

export const get = (url, params, config = {}) => {
  return new Promise((resolve, reject) => {
    instance({
      method: 'get',
      url,
      params,
      ...config
    }).then(response => {
        resolve(response)
    }).catch(error => {
        reject(error)
    })
  })
}

统一封装post请求

export const post = (url, data, config = {}) => {
  return new Promise((resolve, reject) => {
    instance({
      method: 'post',
      url,
      data,
      ...config
    }).then(response => {
        resolve(response)
    }).catch(error => {
        reject(error)
    })
  })
}

vue安装axios脚手架报“ ./node_modules/axios/lib/core/mergeConfig.js”错误解决方法

Vue.js与React主要区别在哪?(附示例)

vue如何实现数据请求(axios/ajax)

vuejs打包后修改static文件夹下json文件中值但页面上获取不到最新数据

react语法中如何移除节点

标签: axios, react

上面是“react如何实现axios拦截功能(附代码介绍)”的全面内容,想了解更多关于 reactjs 内容,请继续关注web建站教程。

当前网址:https://ipkd.cn/webs_2753.html

声明:本站提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请发送到邮箱:admin@ipkd.cn,我们会在看到邮件的第一时间内为您处理!

当前位置: 网站首页 > reactjs
本文共计1401个字,预计阅读时长10分钟
生活小工具,收录了80多款小工具
上一篇: 推荐一款可免费商用圆体字库——江城圆体
下一篇: 推荐一款由字制区设计团队的免费综艺字体——字制区喜脉体
x 打工人ai神器