当前位置:   article > 正文

封装fetch请求

封装fetch请求

fetch请求对IE不友好,而Vue3也IE不友好,那么之后在创建Vue3项目的时候是不是可以尝试用Vue3 + fetch去代替axios呢?

当然也不知道行不行,所以先记录下我对fetch的封装。

首先引入封装请求的常用模块 - qs

npm install qs

简单封装下fetch请求 - 没什么好说的直接上代码

  1. /**
  2. * 配置请求
  3. */
  4. // 导入模块
  5. import qs from 'qs';
  6. // URL地址 - 这边是接口的前缀 - 根据实际情况自行引入
  7. import { BASE_URL } from './config.js';
  8. /** 封装fetch请求 */
  9. function sendFetch(url, params = null, method = 'GET') {
  10. return new Promise(async (resolve, reject) => {
  11. // 配置的参数
  12. let config = {
  13. headers: {
  14. 'token': localStorage.getItem('token') || "",
  15. },
  16. };
  17. // 判断请求类型
  18. if(method.toUpperCase() === 'GET' || method.toUpperCase() === 'DELETE') {
  19. if(params) {
  20. url += "?" + qs.stringify(params);
  21. }
  22. }
  23. else if(method.toUpperCase() === 'POST' || method.toUpperCase() === 'PUT') {
  24. config = {
  25. method,
  26. headers: {
  27. 'Content-Type': 'application/json',
  28. ...config.headers,
  29. },
  30. };
  31. if(params) {
  32. config = {
  33. ...config,
  34. body: JSON.stringify(params),
  35. };
  36. }
  37. }
  38. try {
  39. const response = await fetch(BASE_URL + url, {
  40. mode: 'cors',
  41. ...config,
  42. });
  43. response.json().then(res => {
  44. resolve(res);
  45. }).catch(error => {
  46. reject(error);
  47. });
  48. } catch(error) {
  49. reject(error);
  50. }
  51. });
  52. }
  53. // 导出配置好的对象
  54. export default sendFetch;

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

闽ICP备14008679号