当前位置:   article > 正文

vue3+ts+axios 二次封装_ts+axios+return new promise

ts+axios+return new promise

一、依赖安装:

npm i axios qs @types/qs

二、axois/index.ts

  1. import axios from 'axios'
  2. import qs from 'qs'
  3. const baseUr = 'http://backend-api-01.newbee.lid/api/v1/user/register'
  4. let path = "http://backend-api-01.newbee.lid/api/v1/" //请求根地址
  5. // let path = "http://localhost:3060/" //请求根地址
  6. // 全局默认配置
  7. axios.defaults.baseURL = path
  8. axios.defaults.timeout = 10000
  9. axios.defaults.headers.common['Authorization'] = localStorage.getItem('token') + ''
  10. //请求拦截
  11. axios.interceptors.request.use(
  12. async config => {
  13. // 每次发送请求之前判断vuex中是否存在token
  14. // 如果存在,则统一在http请求的header都加上token,这样后台根据token判断你的登录情况
  15. // 即使本地存在token,也有可能token是过期的,所以在响应拦截器中要对返回状态进行判断
  16. config.headers.token = sessionStorage.getItem('token')
  17. return config;
  18. },
  19. error => {
  20. return Promise.reject(error);
  21. })
  22. // 添加响应拦截器
  23. axios.interceptors.response.use(function (response) {
  24. let { data } = response
  25. if (data.token) {
  26. localStorage.setItem('kuaishi', data.token)
  27. axios.defaults.headers.common['Authorization'] = data.token;
  28. }
  29. return response;
  30. }, function (error) {
  31. // if (error.response.status) {
  32. // switch (error.response.status) {
  33. // // 401: 未登录
  34. // // 未登录则跳转登录页面,并携带当前页面的路径
  35. // // 在登录成功后返回当前页面,这一步需要在登录页操作。
  36. // case 401:
  37. // break
  38. // // 403 token过期
  39. // // 登录过期对用户进行提示
  40. // // 清除本地token和清空vuex中token对象
  41. // // 跳转登录页面
  42. // default:
  43. // }
  44. // return Promise.reject(error.response);
  45. // }
  46. return Promise.reject(error);
  47. });
  48. const get = (url: string, params: object) => {
  49. return new Promise((resolve, reject) => {
  50. axios.get(url, { params }).then(res => {
  51. resolve(res.data)
  52. }).catch(err => {
  53. alert('服务出错')
  54. })
  55. })
  56. }
  57. const post = (url: string, data: object) => {
  58. return new Promise((resolve, reject) => {
  59. axios.post(url, qs.stringify(data)).then(res => {
  60. resolve(res.data)
  61. }).catch(err => {
  62. alert('服务出错')
  63. })
  64. })
  65. }
  66. export {
  67. get, post
  68. }

三、axios/api.ts

  1. import {
  2. get, post
  3. } from './index'
  4. export default {
  5. // Login: (data: object) => post('/api/users/Login', data), // 登录
  6. }

只要在使用的文件里面引入 axios/api.ts 就行

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/285628
推荐阅读
相关标签
  

闽ICP备14008679号