axios请求的简单封装

小灰灰 2023-03-03 11:26 47阅读 0赞

创建一个axios.js文件

  1. import axios from 'axios';
  2. import baseUrl from '../utils/baseUrl';
  3. const config = {
  4. baseURL: baseUrl() || "",
  5. timeout: 60 * 1000, // Timeout
  6. withCredentials: true, // Check cross-site Access-Control
  7. };
  8. const request = axios.create(config);
  9. //http request 拦截器
  10. request.interceptors.request.use(
  11. config => {
  12. var token = sessionStorage.getItem("token", token);
  13. if (token) {
  14. //将token放到请求头发送给服务器,将tokenkey放在请求头中
  15. // config.headers.token = token;
  16. // config.headers.Authorization = `Bearer ${token}`;
  17. } else {
  18. // if (config.url.indexOf('login') == -1) {
  19. // // location.href = '/login'
  20. // }
  21. }
  22. return config;
  23. },
  24. error => {
  25. return Promise.reject(err);
  26. }
  27. );
  28. //http response 拦截器
  29. request.interceptors.response.use(
  30. response => {
  31. if (response.data.code === 403) {
  32. // Message.error(response.data.msg);
  33. // location.href = '/login'
  34. //其余错误状态处理
  35. } else {
  36. return response;
  37. }
  38. },
  39. error => {
  40. // location.href = "/login"
  41. return Promise.reject(error)
  42. }
  43. )
  44. /**
  45. * 封装get方法
  46. * @param url
  47. * @param data
  48. * @returns {Promise}
  49. */
  50. export function get(url, params) {
  51. return new Promise((resolve, reject) => {
  52. request.get(url , {
  53. params: params
  54. })
  55. .then(response => {
  56. resolve(response.data);
  57. })
  58. .catch(err => {
  59. reject(err)
  60. })
  61. })
  62. }
  63. /**
  64. * 封装post请求
  65. * @param url
  66. * @param data
  67. * @returns {Promise}
  68. */
  69. export function post(url, data) {
  70. return new Promise((resolve, reject) => {
  71. request.post(url, data)
  72. .then(response => {
  73. resolve(response.data);
  74. }, err => {
  75. reject(err)
  76. })
  77. })
  78. }
  79. /**
  80. * 封装put请求
  81. * @param url
  82. * @param data
  83. * @returns {Promise}
  84. */
  85. export function put(url, data) {
  86. return new Promise((resolve, reject) => {
  87. request.put(url, data)
  88. .then(response => {
  89. resolve(response.data)
  90. }).catch(err => {
  91. reject(err)
  92. })
  93. })
  94. }

在main.js引入import { get, post,put } from ‘./js/axios’

  1. import { get, post,put } from './js/axios'
  2. Vue.prototype.$get = get;
  3. Vue.prototype.$post = post;
  4. Vue.prototype.$put = put;

在需要请求的页面自己this.$请求方(‘url’,参数).then()

发表评论

表情:
评论列表 (有 0 条评论,47人围观)

还没有评论,来说两句吧...

相关阅读

    相关 vue-封装axios请求

    最近接手新的vue项目,发现axios竟然没有封装,立马动手封装,这里记录一下完整的封装过程,废话不说,直接上代码 baseConfig.js文件 //存放各个服