当前位置:   article > 正文

UniApp 统一的接口 myRequest 用于进行 HTTP 请求_my.request请求

my.request请求

本人小白做过:H5 小程序 ,都是用的着一套myRequest  的封装方式,我个人感觉很好用.

但是,如果后端的请求携带方式如果是 FormData() 的可能改起来比较麻烦,但是对于日常来说我感觉已经足够了,咱们话不多说,直接上代码!

详细代码如下:

  1. // 后台服务器地址 判断是开发环境还是正式环境
  2. export const DOMAIN_URL = process.env.NODE_ENV === 'development' ? 'http://172.16.101.182:8003' :
  3. 'http://h5.myjd.lanjing/prod-api'; // 换为你这边的正式的开发地址
  4. // 基础地址,使用后台服务器地址
  5. export const BASE_URL = DOMAIN_URL;
  6. // 自定义请求函数 myRequest
  7. export const myRequest = (option) => {
  8. // console.log(option);
  9. return new Promise((resolve, reject) => {
  10. // 在页面上显示加载中
  11. uni.showLoading({
  12. title: '加载中',
  13. mask: true,
  14. });
  15. // 构建完整的请求地址
  16. let url = BASE_URL + option.url;
  17. // 检查是否有参数,如果有,添加查询字符串
  18. if (Object.keys(option.params || {}).length > 0) {
  19. const queryString = Object.entries(option.params).map(([key, value]) =>
  20. `${encodeURIComponent(key)}=${encodeURIComponent(value)}`).join("&");
  21. url += (url.includes('?') ? '&' : '?') + queryString;
  22. }
  23. // 发起uni.request请求
  24. uni.request({
  25. timeout: 3000,
  26. url: url,
  27. method: option.method || "GET",
  28. header: {
  29. // 设置请求头信息
  30. "token": uni.getStorageSync("token"),
  31. 'Authorization': "Bearer " + uni.getStorageSync("token"),
  32. },
  33. data: option.data,
  34. success: (res) => {
  35. // console.log(res.data);
  36. // 隐藏加载中
  37. uni.hideLoading();
  38. // 停止下拉刷新
  39. uni.stopPullDownRefresh();
  40. // 处理请求成功的情况
  41. if (res.data.code == 401) {
  42. // 处理特定的返回码
  43. }
  44. if (res.data.code == 200) {
  45. resolve(res.data);
  46. }
  47. if (res.data.code == 500) {
  48. const token = uni.getStorageSync("token");
  49. console.log(Boolean(token));
  50. if (Boolean(token)) {
  51. // 处理特定的返回码
  52. } else {
  53. // 在500错误的情况下跳转到登录页
  54. setTimeout(() => {
  55. uni.switchTab({
  56. url: "/pages/login/login"
  57. });
  58. }, 500);
  59. }
  60. }
  61. if (res.data.code == 1020) {
  62. // 在1020错误的情况下提示重新登录
  63. uni.$u.toast('请重新登录');
  64. // 刷新当前页面或跳转到登录页
  65. uni.removeStorageSync('token');
  66. uni.removeStorageSync('userInfo');
  67. let pages = getCurrentPages();
  68. let page = undefined;
  69. if (pages[pages.length - 1].route == "pages/login/login") {
  70. if (pages) {
  71. page = pages[pages.length - 1];
  72. page.onLoad(true);
  73. page.onShow(true);
  74. }
  75. } else {
  76. setTimeout(() => {
  77. uni.switchTab({
  78. url: "pages/login/login"
  79. });
  80. }, 1500);
  81. }
  82. return;
  83. }
  84. resolve(res.data);
  85. },
  86. fail: (err) => {
  87. // 隐藏加载中
  88. uni.hideLoading();
  89. // 在请求失败的情况下弹出提示
  90. uni.$u.toast('服务器请求失败'); // uview简洁写法,需要提前引入uview组件
  91. reject(err);
  92. }
  93. });
  94. });
  95. };

下面是接口统一封装的方式:

  1. // 引入封装的请求
  2. import { myRequest } from "@/utils/request.js";
  3. // data 是后端携带参数格式 application/json Json 格式
  4. // params 是后端携带参数格式 x-www-form-urlencoded(默认请求方式) 字符串拼接
  5. // 获取顶部导航列表
  6. export function conferenceServiceListAPI(data) {
  7. return myRequest({
  8. url: "/xlkj-psb-web/conferenceService/pageList",
  9. method: "post",
  10. data,
  11. });
  12. }
  13. // 修改手机号
  14. export const update_phoneAPI = (params) => {
  15. return myRequest({
  16. url: "/xlkj-psb-web/member/update_phone",
  17. method: "post",
  18. params,
  19. });
  20. };
  21. // 删除按钮
  22. export const jobDeleteAPI = (id) => {
  23. return myRequest({
  24. url: `/xlkj-psb-web/job/delete/${id}`,
  25. method: "post",
  26. });
  27. };

如有不对的地方,本人虚心请教,我是时长一年半的前端练习生,哈哈哈.

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

闽ICP备14008679号