axios的使用和接口请求统一封装处理

 axios官网:axios中文网|axios API 中文文档 | axios

简单封装:配置基础路径和超时时间,还有请求拦截器和响应拦截器 

//对axios进行二次封装
import axios from 'axios'//1、利用axios对象的方法create,去创建一个axios实例
const requests = axios.create({//配置对象//基础路径,requests发出的请求在端口号后面会跟改baseURlbaseURL: '/api',//代表请求超时的时间5stimeout: 5000,
})
//请求拦截器,在请求发出之前做些事情
requests.interceptors.request.use((config) => {//config:配置对象,对象里面有个属性很重要,header请求头return config
})
//响应拦截器,对响应的数据做一些操作
requests.interceptors.response.use((res) => {//成功回调函数,服务器响应数据回来以后,响应拦截器可以检测到,可以做一些事情return res.data},(error) => {//响应失败回调函数,如终结Promise链console.log('请求失败:', error)return Promise.reject(error)}
)
//对外暴露
export default requests

 

接口统一管理 api/index.js

import requests from '@/utils/http'export default {getList(data) {return requests({url: '/message/list',method: 'post',data,})},changeStatus(data) {return requests({url: '/message/isReads',method: 'post',data,})},getMsgType(params) {return requests({url: '/message/messageType',method: 'get',params,})},deleteMsg(data) {return requests({url: '/message/delete',method: 'post',data,})},
}

ts格式的请求:

import requests from '@/utils/http'export default {getList(data: object) {return requests({url: '/message/list',method: 'post',data,})},changeStatus(data: object) {return requests({url: '/message/isReads',method: 'post',data,})},getMsgType(params: object) {return requests({url: '/message/messageType',method: 'get',params,})},deleteMsg(data: object) {return requests({url: '/message/delete',method: 'post',data,})},
}

在组件中使用get请求:

      try {const { data } = await msgApi.getMsgType()data && (this.msgTypelist = Object.keys(data).map((i) => {const obj = {}obj.id = +iobj.label = data[i]return obj}))} catch (error) {console.log(error)}

发送Post请求:

      msgApi.changeStatus({ ids: idArr }).then((res) => {if (res.retcode === 0) {this.$message.success('操作成功')}})

带有鉴权方案的axios封装:

import axios from 'axios'
// import store from '@/store'
import { Message } from 'element-ui'const service = axios.create({baseURL: `${window.location.origin}/fate-serving/api`,withCredentials: false,timeout: 20000 // request timeout
})
// request interceptor
service.interceptors.request.use((config) => {const token = localStorage.getItem('sessionToken')config.headers['sessionToken'] = tokenreturn config},error => {// Do something with request errorPromise.reject(error)}
)// response interceptor
service.interceptors.response.use(/*** If you want to get information such as headers or status* Please return  response => response*/response => {const res = response.dataif ((res.code !== undefined && res.code === 0) || (res.retcode !== undefined && res.retcode === 0)) {return new Promise(resolve => {resolve(res)})} else if (res.code === 401) {Message({message: '登录已失效,请重新登录',type: 'warning',duration: 2 * 1000})localStorage.removeItem('sessionToken')// setTimeout(() => {//   window.location.reload()// }, 800)} else {Message({message: res.message || res.msg || res.retmsg,type: 'error',duration: 2 * 1000})return Promise.reject('error')}},error => {console.log('err:', error) // for debugMessage({message: error.message,type: 'error',duration: 2 * 1000})return Promise.reject(error)}
)export default service

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/60048.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生信分析pandas数据处理 Python简明教程 | 视频17

开源生信 Python教程 生信专用简明 Python 文字和视频教程 源码在:https://github.com/Tong-Chen/Bioinfo_course_python 目录 背景介绍 编程开篇为什么学习Python如何安装Python如何运行Python命令和脚本使用什么编辑器写Python脚本Python程序事例Python基本语法 数…

本地项目如何连接git远程仓库

在本地新建项目后,如何连接git远程仓库呢?步骤如下: 第一步, 首先我们在git上新建仓库,设置模板可勾选Readme文件。(readme文件的创建是为了介绍所写代码的一些详细信息,为了之后更好的维护。)…

《大型网站技术架构》第二篇 架构-高可用

高可用在公司中的重要性 对公司而言,可用性关系网站的生死存亡。对个人而言,可用性关系到自己的绩效升迁。 工程师对架构做了许多优化、对代码做了很多重构,对性能、扩展性、伸缩性做了很多改善,但别人未必能直观地感受到&#…

Android Studio跳过Haxm打开模拟器

由于公司权限限制无法安装Haxm,这个时候我们可以试试Arm相关的镜像去跳过Haxm运行模拟器。解决方案:安装API27以下的Arm Image. #ifdef __x86_64__if (sarch "arm64" && apiLevel >28) {APANIC("Avds CPU Architecture %s i…

常见分布式ID解决方案总结:数据库、算法、开源组件

常见分布式ID解决方案总结 分布式ID分布式ID方案之数据库数据库主键自增数据库号段模式Redis自增MongoDB 分布式ID方案之算法UUIDSnowflake(雪花算法) 雪花算法的使用IdWorker工具类配置分布式ID生成器 分布式ID方案之开源组件uid- generator(百度)Tinyid(滴滴&…

Mac电脑如何把照片以文件格式导出?

在Mac电脑上,我们经常会拍摄、保存和编辑各种照片。有时候,我们可能需要将这些照片以文件形式导出,以便与他人共享、打印或备份。无论您是要将照片发送给朋友、上传到社交媒体,还是保存到外部存储设备,导出照片为文件是…

OpenCV实战(29)——视频对象追踪

OpenCV实战(29)——视频对象追踪 0. 前言1. 追踪视频中的对象2. 中值流追踪器算法原理3. 完整代码小结系列链接 0. 前言 我们已经学习了如何跟踪图像序列中点和像素的运动。但在多数应用中,通常要求追踪视频中的特定移动对象。首先确定感兴趣…

2023河南萌新联赛第(五)场:郑州轻工业大学 --亚托莉 -我挚爱的时光-

题目描述 亚托莉,-我挚爱的时光- 亚托莉自身机器可能有出了一点小故障,希望你能帮助她解决这个问题~ 亚托莉内部的操作系统的是 Linux 操作系统,不同于 Windows 操作系统。在大多数情况下, Linux 操作系统一般是通过…

【第一阶段】kotlin的函数

函数头 fun main() {getMethod("zhangsan",22) }//kotlin语言默认是public,kotlin更规范,先有输入( getMethod(name:String,age:Int))再有输出(Int[返回值]) private fun getMethod(name:String,age:Int): Int{println("我叫…

Python做一个绘图系统3:从文本文件导入数据并绘图

文章目录 导入数据文件对话框修改绘图逻辑源代码 Python绘图系统系列:将matplotlib嵌入到tkinter 简单的绘图系统 导入数据 单纯从作图的角度来说,更多情况是已经有了一组数据,然后需要将其绘制。这组数据可能是txt格式的,也可能…

一分钟学会JS获取当前年近五年的年份

先看效果图 上代码&#xff1a; 1、HTML <div><el-date-pickerv-model"queryYearXmgk.startYear"format"yyyy"value-format"yyyy"type"year"placeholder"开始"clearable:picker-options"pickerStartAuditYe…

Node RESTful API说明

1、什么是 REST REST即表述性状态传递&#xff1b; 表述性状态转移是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是RESTful。需要注意的是&#xff0c;REST是设计风格而不是标准。 2、HTTP 方法 以下为 REST 基本架构的四个方法&#xff1a; GET - …