axios的简单封装

其实经常在做前后端分离的小伙伴经常遇到前后端交互时,经常会使用axios或者fetch与后端进行交互,常说适合自己的就是最好的,许多人已经有自己常用的一套写法,我现在把我的写法推荐给大家。

import axios from 'axios';
import Qs from 'qs';
import regeneratorRuntime from "regenerator-runtime";
import _ from 'lodash/assignIn';
const baseUrl = process.env.NODE_ENV == 'production' ? 'https:/xxxx' : 'http://xxxxx';const Service = async (context) => {const {url, ...data} = context;const token = window.localStorage.getItem('AUTHORIZATION');const username = window.localStorage.getItem('USERNAME');const instance = axios.create({baseURL: baseUrl,timeout: 100000,credentials: 'include',mode: 'cors',      });const header = data.headers ? data.headers['Content-Type'] : 'application/x-www-form-urlencoded; charset=utf-8';//创建请求拦截器instance.interceptors.request.use(config => {config.params = Qs.stringify(config.params);config.headers = {'Content-Type': header,'Authorization': token,'USERNAME': username};        return config; }, error => {return Promise.reject(error);});//创建响应拦截器instance.interceptors.response.use(response => {  return response;  }, error => {console.log("error:", error);switch (error.response.status) {case 400:return Promise.reject(error.response.data);case 401:window.location.href = '/#/login';return Promise.reject({'errorMessage': '会话已过期,已跳转登录页面'});           case 404:return Promise.reject({'errorMessage': "暂时无法处理该请求,该问题已发送给管理员"});case 500:return Promise.reject({"errorMessage": '服务器请求失败,该问题已发送给管理员'})default:return Promise.reject(error); };      });const response = await new Promise((resolve, reject)=> {instance({url: baseUrl + url,...data}).then((response) => {resolve(response.data);}).catch (error => reject(error));})return response;};
export {Service, baseUrl};

发送端

 let context = {'url': '/setinfo/','method': 'put','data': {last_name:username,sex,canremix:remix},'headers': {'Content-Type': 'application/json; charset=UTF-8'},};Service(context).then((response)=>{if(response.status === 'success'){alert.success("用户信息保存成功");props.onUpdateUserMessage(response.data);props.onUpdateUserCanremix(response.data);};}).catch((error) => {alert.error(error.errorMessage);})

react axios封装相关推荐

  1. axios post body参数_Vue开发中的一些问题(axios封装)

    关于Vue开发的问题(axios封装) 在博客中查找vue的axios封装,发现其中案例还是很多的,自己项目中有些需求不够. 比如 1.Content-Type 请求头 application/x-w ...

  2. axios设置text html,axios封装动态设置Content-Type

    问题如下: 有个问题 是这样的 后台给的API接口 请求类型有两种 'Content-Type': 'application/json' 'Content-Type': 'application/x- ...

  3. vue中将axios封装

    在平时写项目中,经常会遇到组件调用同一个接口或者不同接口 import axios from "axios"axios({url: "https://autumnfish ...

  4. vue axios封装 获取微信公众号用户的openid

    目录 axios封装 openid vue vue+ts axios封装 一般会在项目的src目录中,新建一个文件夹,作为网络请求模块,用来封装axios, 创建axios实例: axios.crea ...

  5. React 组件封装之 Tree 树形控件

    React 组件封装之 Tree 树形控件 一.Tree 树形结构 二.使用案例 三.API 使用指南 四.源代码 五.总结 一.Tree 树形结构 组件说明: 实现树形控件,适用于组织架构.文章列表 ...

  6. React 组件封装之 Card 卡片

    React 组件封装之 Card 一.Card 卡片 二.使用案例 三.API 使用指南 四.源代码 一.Card 卡片 组件说明: 使列表成为卡片形式的布局. 效果展示: 二.使用案例 import ...

  7. ajax和axios封装

     Ajax 1.ajax理解 ajax是async JavaScript and xml /异步的js和xml 主要用来实现页面的局部刷新 在浏览器里内置了ajxa的核心对象的:XMLHttpRequ ...

  8. vue中axios封装请求

    执行 GET 请求 // 向具有指定ID的用户发出请求 axios.get('/user?ID=12345') .then(function (res) {console.log(res); }) . ...

  9. 前端学习笔记(16)-Axios封装

    1.Axios介绍 1.1 概述 Vue前端开发少不了向服务器请求数据,我们选择axios插件,他是一款功能强大,且易用的网络请求工具. 1.2 全称 ajax i/o system 1.3 功能介绍 ...

  10. axios封装(通用)

    axios封装 封装目的: 避免重复设置超时时间,请求头,错误处理:提高代码质量 主要文件目录: post/index.js /** @Descripttion: axios 封装* @version ...

最新文章

  1. 【体验】感谢朋友雪中送炭寄来的便携示波器,便携示波器开箱体验
  2. java排序算法代码_Java实现八种排序算法(代码详细解释)
  3. JAVA蘑菇西餐,蘑菇的22种西餐做法,简单易上手,让你品尝不一样的风味
  4. PADS Layout的一个鼠标小技巧
  5. 订阅号 图文回复php,微信开发(PHP实现订阅号的公众号配置和自动回复)
  6. linux C/C++开发环境搭建指南
  7. 计算机网络中tdm是什么,计算机网络-复习题(1)
  8. 复选框(checkbox)、单选框(radiobox)的使用
  9. 考研英语真题笔记 2020
  10. appuim+python自动化测试计算器实例
  11. 《STM32从零开始学习历程》——SPI读取FLASH ID
  12. Hash冲突解决方法
  13. Java实现进制转换方法汇总
  14. Flips测试类(page43)
  15. 电脑出现问题。你的PIN不可用,请单击以重置——解决方案总结
  16. 科学划定“三区三线” 严格保护与合理利用自然资源
  17. 【项目管理软件盛宴】谁才是人气王?
  18. Rest_Assured接口测试学习汇总
  19. 程序员面试常见问题有哪些?如何回答才能拿到offer?
  20. Chips-2.0(一) 安装

热门文章

  1. pwrkey直接接地 sim7020_有方模块常见问题解答
  2. 系统集成项目管理工程师有什么用,你真的了解吗?
  3. 基于cat12和SPM12进行大脑VBM数据分析笔记2——统计分析
  4. 3dmax全局材质灯光细分插件_【3D脚本插件】如何利用插件快速修改全局灯光材质细分...
  5. 深度学习与计算机视觉教程(6) | 神经网络训练技巧 (上)(CV通关指南·完结)
  6. visio一分二的箭头_Visio如何画各种线条与箭头?
  7. POI合并单元格后边框显示问题
  8. 黑马JAVA P108 语法知识:枚举、枚举作用
  9. CleanMyPC比360管家好用N倍的电脑清理软件
  10. air724UG + Luat玩转物联网(一) 环境搭建及固件烧录