vue axios请求封装

红太狼 2023-01-03 14:17 404阅读 0赞
  1. axios.defaults.baseURL = 'http://172.16.26.133:8080/XCPS'; //填写域名
  2. //http request 拦截器
  3. axios.interceptors.request.use(
  4. config => {
  5. config.data = JSON.stringify(config.data);
  6. config.headers = {
  7. "content-type": "application/json",
  8. }
  9. return config;
  10. },
  11. error => {
  12. return Promise.reject(err);
  13. }
  14. );
  15. //响应拦截器即异常处理
  16. axios.interceptors.response.use(response => {
  17. return response
  18. }, err => {
  19. if (err && err.response) {
  20. switch (err.response.status) {
  21. case 400:
  22. console.log('错误请求')
  23. break;
  24. case 401:
  25. console.log('未授权,请重新登录')
  26. break;
  27. case 403:
  28. console.log('拒绝访问')
  29. break;
  30. case 404:
  31. console.log('请求错误,未找到该资源')
  32. break;
  33. case 405:
  34. console.log('请求方法未允许')
  35. break;
  36. case 408:
  37. console.log('请求超时')
  38. break;
  39. case 500:
  40. console.log('服务器端出错')
  41. break;
  42. case 501:
  43. console.log('网络未实现')
  44. break;
  45. case 502:
  46. console.log('网络错误')
  47. break;
  48. case 503:
  49. console.log('服务不可用')
  50. break;
  51. case 504:
  52. console.log('网络超时')
  53. break;
  54. case 505:
  55. console.log('http版本不支持该请求')
  56. break;
  57. default:
  58. console.log(`连接错误${ err.response.status}`)
  59. }
  60. } else {
  61. console.log('连接到服务器失败')
  62. }
  63. return Promise.resolve(err.response)
  64. })
  65. /** * 封装get方法 * @param url * @param data * @returns {Promise} */
  66. export function get(url, params = { }) {
  67. return new Promise((resolve, reject) => {
  68. axios.get(url, {
  69. params: params
  70. })
  71. .then(response => {
  72. resolve(response.data);
  73. })
  74. .catch(err => {
  75. reject(err)
  76. })
  77. })
  78. }
  79. /** * 封装post请求 * @param url * @param data * @returns {Promise} */
  80. export function post(url, data = { }) {
  81. return new Promise((resolve, reject) => {
  82. axios.post(url, data)
  83. .then(response => {
  84. resolve(response.data);
  85. }, err => {
  86. reject(err)
  87. })
  88. })
  89. }
  90. /** * 封装patch请求 * @param url * @param data * @returns {Promise} */
  91. export function patch(url, data = { }) {
  92. return new Promise((resolve, reject) => {
  93. axios.patch(url, data)
  94. .then(response => {
  95. resolve(response.data);
  96. }, err => {
  97. reject(err)
  98. })
  99. })
  100. }
  101. /** * 封装put请求 * @param url * @param data * @returns {Promise} */
  102. export function put(url, data = { }) {
  103. return new Promise((resolve, reject) => {
  104. axios.put(url, data)
  105. .then(response => {
  106. resolve(response.data);
  107. }, err => {
  108. reject(err)
  109. })
  110. })
  111. }
  112. /** * 下面是获取数据的接口 */
  113. /** * 测试接口 * 名称:exam * 参数:paramObj/null * 方式:fetch/post/patch/put */
  114. export const http = {
  115. get,
  116. post,
  117. patch,
  118. put
  119. }

发表评论

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

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

相关阅读

    相关 Vue中统一封装Axios请求

    1.Axios 是什么,为什么要统一封装? axios是一个基于promise的http库,可运行在浏览器端和node.js中。他有很多优秀的特性,例如统一进行拦截请...

    相关 vue-封装axios请求

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