当前位置:   article > 正文

封装uni.app vue3 ts 的网络请求_uniapp vue3 ts封装网络请求

uniapp vue3 ts封装网络请求

//设置基地址

const baseURL = "https://meituan.thexxdd.cn/api";

import { Base64 } from "js-base64";

//Base64.encode(要加密的字符串);

//Base64.decode(要解密的字符串);

//定义ts接口

interface httpOptions {

  url: string;

  method: "GET" | "POST" | "PUT" | "DELETE";

  data?: any;

}

//处理token的函数

const getToken = () => {

  //读取token

  const token = uni.getStorageSync("wxuser").user_Token || "";

  //拼接冒号

  const strtoken = token + ":";

  //再加密

  const encodeToke = Base64.encode(strtoken);

  //再通过接拼"Basic "传递给后台

  return "Basic " + encodeToke;

};

//返回类型

//基于Promise封装uni.request

const request = (options: httpOptions): Promise<any> => {

  return new Promise((resolve, reject) => {

    //先加载loading

    uni.showLoading({

      title: "玩命加载中。。",

    });

    uni.request({

      url: `${baseURL}/${options.url}`,

      method: options.method,

      data: options.data,

      //请求头配置,通常是token,自定义头信息

      header: {

        authorization: getToken(),

      },

      success(res) {

        console.log("返回结果:::", res);

        uni.hideLoading();

        if (res.statusCode === 200) {

          resolve(res);

        } else if (res.statusCode === 404) {

          uni.showToast({

            title: "文件未找到",

            icon: "none",

          });

        } else if (res.statusCode === 500) {

          uni.showToast({

            title: "服务器错误",

            icon: "none",

          });

        } else if (res.statusCode === 401) {

          uni.showToast({

            title: "没有访问权限",

            icon: "none",

          });

          //跳转到登录页

          uni.navigateTo({

            url: "/pages/login/login",

          });

          return Promise.reject("未授权登录,报错");

        } else if (res.statusCode === 202) {

          uni.showToast({

            title: res.data.msg,

            icon: "none",

          });

        } else if (res.statusCode === 400) {

          uni.showToast({

            title: "表示参数填写错误,往往是开发者填写参数不对造成的",

            icon: "none",

          });

        }

      },

      fail(error) {

        return Promise.reject(error);

      },

    });

  });

};

//上传图片地址

const UPLOAD_IMAGE_URL = baseURL + "/upload_picture";

//上传AI身份证地址

const UPLOAD_AI_URL = baseURL + "/ai_card";

export { UPLOAD_IMAGE_URL, UPLOAD_AI_URL };

export default request;

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