uniapp 微信小程序请求拦截器 接口封装

简介: uniapp 微信小程序请求拦截器 接口封装

前言:

请求拦截器可以在我们需要传递请求头的时候使用,例如:token

也会在当token发生变化的时候给予响应,所以我们做好对应的判断即可

1.首先在根目录创建common文件夹,

在里面创建request.js文件并加入以下代码:

export default {
  config: {
  //baseURL这里可以放自己的接口域名
    baseURL: "",
    getToken() {
    //获取token
      let token = uni.getStorageSync("userInfo").token;
      if (!token) {
        return uni.reLaunch({ url: "/pages/login/login" });
      }
      return token;
    },
    //获取userid
    getUser() {
      let id = uni.getStorageSync("userInfo").id;
      if (!id) {
        return uni.reLaunch({ url: "/pages/login/login" });
      }
      return id;
    },
    // 响应拦截器
    beforeRequest(options = {}) {
      return new Promise((resolve, reject) => {
      //请求的地址 = 上面设置的域名加上接口封装的地址
        options.url = this.baseURL + options.url;
        options.method = options.method || "POST";
        //添加请求头
        options.header = {
          token: this.getToken(),
          id: this.getUser(),
        };
        resolve(options);
      });
    },
    // 请求拦截器
    handleResponse(data) {
    //自行打印data根据data里的数据进行判断token过期等等
      if (data.data.code == 0 && data.data.msg == "权限错误"){
        uni.showModal({
            title: '提示',
            content: '已掉线,是否重新登录',
            showCancel: true,
            success: ({ confirm, cancel }) => {
                if(confirm){
                    uni.redirectTo({ url: '/pages/login/login' })
                }else{
                }
            }
        })
      }
      return data;
    },
  },
  // request 请求
  request(options = {}) {
    return this.config
      .beforeRequest(options)
      .then((opt) => {
        return uni.request(opt);
      })
      .then((res) => this.config.handleResponse(res));
  },
};

2,在common文件夹下接着新建一个example.js文件来当作接口封装的文件

// api/example.js
import api from "@/common/request.js";
//把我们刚才写的request.js文件引入过来
export function pubdemo(data) {
  console.log(data, "传递的参数");
  //使用引入的request发送请求
  return api.request({
  //request.js文件里面已经有前缀了所以这里直接写后面的路径即可
    url: "/api/web/Notice/reminder",
    method: "post",
    data: data,
  });
}

3,页面内使用

import { pubdemo } from "@/common/example.js";
    pubdemo({
    //这里是要传递的参数,前面参数名后面参数值
        id: 12,
      }).then((res) => {
        console.log(res.data,res.data);
      });

4,对于一些不用传递参数的接口直接把变量名里面的对象删除即可

pubdemo().then((res) => {
        console.log(res.data,res.data);
      });
微信小程序

微信小程序跟uniapp同理,只需要把某些东西改一下即可

创作不易,留下免费的双击关注再走吧~

相关文章
|
8月前
|
前端开发 API UED
封装 uniapp 请求库的最佳实践
背景 在前端开发中,HTTP 请求是与服务器进行数据交互的核心手段。无论是获取数据还是提交数据,前端应用几乎都离不开 HTTP 请求。在 uniapp 中,uni.request 是官方提供的用于发起 HTTP 请求的基础 API。然而,直接使用 uni.request 存在一些问题和不足,比如: 1. 代码冗余:每次发起请求时都需要编写类似的配置代码,导致代码重复。 2. 缺乏统一管理:没有统一的地方管理请求参数、头信息、错误处理等,使得代码不易维护
355 7
|
移动开发 小程序
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
576 0
|
人工智能 小程序 搜索推荐
uni app下开发AI运动小程序解决方案
本文介绍了在小程序中实现AI运动识别的解决方案。该方案依托于UNI平台,通过高效便捷的插件形式,实现包括相机抽帧控制、人体识别、姿态识别等在内的多项功能,无需依赖后台服务器,大幅提高识别效率和用户体验。方案内置多种运动模式,支持自定义扩展,适用于AI健身、云上赛事、AI体测等多场景,适合新开发和存量改造项目。
|
小程序 前端开发 JavaScript
在线课堂+工具组件小程序uniapp移动端源码
在线课堂+工具组件小程序uniapp移动端源码
316 0
在线课堂+工具组件小程序uniapp移动端源码
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
3301 3
|
小程序 API
微信小程序更新提醒uniapp
在小程序开发中,版本更新至关重要。本方案利用 `uni-app` 的 `uni.getUpdateManager()` API 在启动时检测版本更新,提示用户并提供立即更新选项,自动下载更新内容,并在更新完成后重启小程序以应用新版本。适用于微信小程序,确保用户始终使用最新版本。以下是实现步骤: ### 实现步骤 1. **创建更新方法**:在 `App.vue` 中创建 `updateApp` 方法用于检查小程序是否有新版本。 2. **测试**:添加编译模式并选择成功状态进行模拟测试。
546 0
微信小程序更新提醒uniapp
|
小程序 数据可视化 API
低代码可视化-uniapp商城首页小程序-代码生成器
低代码可视化-uniapp商城首页小程序-代码生成器
271 0
|
存储 移动开发 小程序
uniapp富文本editor输入二次扩展兼容微信小程序
uniapp富文本editor输入二次扩展兼容微信小程序
904 0
|
小程序
uniapp实现微信小程序隐私协议组件封装
uniapp实现微信小程序隐私协议组件封装
307 0

热门文章

最新文章