【陪诊体系-PC管理端】axios的二次封装

打印 上一主题 下一主题

主题 1032|帖子 1032|积分 3096

二次封装axios


  • 引入axios
  • 创建axios实例,添加设置信息,这里主要设置底子url和请求超时时间
  • 给上述创建的实例添加拦截器,对请求、相应分别进行拦截
    根据接口文档显示,当登录成功后,每次请求陪诊师、订单信息都须要携带token,所以在后续请求发送前须要在请求头上添加上这个token(token是登录成功后,服务端返回的,然后被存储到本地)
  • 请求拦截:设置白名单,由于在登录成功前的注册(获取验证码和验证验证码、登录),是不须要携带token的,所以将它清除
  • 相应拦截:根据返回的相应数据(状态码)进行判定,看看是否数据非常,然后给出相应操作
request.js
  1. import axios from 'axios'
  2. import { ElMessage } from 'element-plus'
  3. const http = axios.create({
  4.     baseURL: 'https:/v3pz.itndedu.com/v3pz',
  5.     timeout: 10000,
  6.     headers: { 'X-Custom-Header': 'foobar' }
  7. });
  8. // 添加拦截器
  9. // 添加请求拦截器
  10. http.interceptors.request.use(function (config) {
  11.     // 在发送请求之前做些什么
  12.     // token作用户鉴权
  13.     const token = localStorage.getItem('pz_token')
  14.     // 不需要添加token的api
  15.     const whiteUrl = ['/get/code', '/user/authentication', '/login']
  16.     if (token && !whiteUrl.includes(config.url)) {
  17.         config.headers['X-token'] = token
  18.     }
  19.     return config;
  20. }, function (error) {
  21.     // 对请求错误做些什么
  22.     return Promise.reject(error);
  23. });
  24. // 添加响应拦截器
  25. http.interceptors.response.use(function (response) {
  26.     // 2xx 范围内的状态码都会触发该函数。
  27.     // 对响应数据做点什么
  28.     // 对接口异常的数据 给用户提示
  29.     if (response.data.code === -1) {
  30.         ElMessage.warning(response.data.message)
  31.     }
  32.     if (response.data.code === -2) {
  33.         // token错误 清楚缓存
  34.         localStorage.removeItem('pz_token')
  35.         localStorage.removeItem('pz_userInfo')
  36.         localStorage.removeItem('pz_v3pz')
  37.         //window.location.orgin 当前页面路由
  38.         window.location.href = window.location.orgin
  39.     }
  40.     return response;
  41. }, function (error) {
  42.     // 超出 2xx 范围的状态码都会触发该函数。
  43.     // 对响应错误做点什么
  44.     return Promise.reject(error);
  45. });
  46. export default http
复制代码
接口文件

使用二次封装后的axios进行请求,在api.js中界说全部的请求函数,末了到详细的某个地方再调用
  1. import request from '../utils/request'
  2. // 发送验证码
  3. export const getCode = (data) => {
  4.     //发送post请求 data是参数
  5.     return request.post('/get/code', data)
  6. }
  7. // 注册用户
  8. export const UserAuthentication = (data) => {
  9.     return request.post('/user/authentication', data)
  10. }
  11. // 登录
  12. export const login = (data) => {
  13.     return request.post('/login', data)
  14. }
  15. // 权限管理
  16. export const authAdmin = (params) => {
  17.     return request.get('/auth/admin', { params })
  18. }
复制代码
详细调用

详细某个功能组件中调用api中的对应接口来发送真正的请求,这里在登录界面调用获取验证码请求。
  1. import {getCode,UserAuthentication,login,menuPermissions} from '../../api'
  2. getCode({tel:loginForm.userName}).then((data)=>{
  3.         // console.log('data',data);
  4.         if(data.code === 10000){
  5.             ElMessage.success('发送成功')
  6.         }
  7.     })
复制代码
文件布局

that’s all!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

乌市泽哥

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表