千家信息网

微信小程序怎么制作api拦截器

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇"微信小程序怎么制作api拦截器 "文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"
千家信息网最后更新 2025年11月07日微信小程序怎么制作api拦截器

这篇"微信小程序怎么制作api拦截器 "文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"微信小程序怎么制作api拦截器 "文章吧。

安装

npm install wxapp-api-interceptors --save使用mpvue等项目
import wxApiInterceptors from 'wxapp-api-interceptors';wxApiInterceptors(); // 必须在调用小程序api之前调用原生小程序项目

下载该项目,解压移动文件夹dist里wxApiInterceptors.js和runtime.js文件到你自己的项目,详见示例。

const wxApiInterceptors = require('./wxApiInterceptors');wxApiInterceptors(); // 必须在调用小程序api之前调用小程序api调用

不必传success、complete和fail参数。

cdn.github.com/images/icons/emoji/unicode/26a0.png">⚠️注意:原生小程序项目不支持Promise.finally

函数式异步调用方式:

wx.showLoading({title: '登录中...'})    .then(wx.login)    .then(data => wx.request.post('/login', {data}))    .then(() => wx.showToast({title: '登录成功'}))    .catch(() => wx.showToast({title: '登录失败'}))    .finally(wx.hideLoading);也兼容原生的调用方式(不便维护):
wx.showLoading({    title: '登录中...',    success: () => {        wx.login({            success: (data) => {                wx.request({                    url: '/login',                    data,                    success: () => wx.showToast({title: '登录成功'}),                    fail: () => wx.showToast({title: '登录失败'}),                    complete: wx.hideLoading,                });            },        });    },});自定义拦截器

使用方法及参数:wxApiInterceptors({[api]: {[request](params):params, [response](res):res}})

比如拦截wx.showModal的confirmColor默认值为red,调用成功后并拦截调用成功返回的结果。

wxApiInterceptors({    showModal: {        request(params) {            if (params.confirmColor === undefined) {                params.confirmColor = 'red';            }            return params;        },        response(res) {            res = '调用成功';            return res;        },    }});wx.showModal({title: '测试'})    .then(console.log);// 控制的输出:调用成功默认拦截了request api,封装成了和axios差不多的使用方式

调用wx.request[method](url, [config])发送axios化的请求。

默认GET请求

wx.request('https://test.com/banner')    .then(({data}) => {        console.log(data);    })其他请求方式
wx.request.post('https://test.com', {data: {userName: 'test'}})    .then(({data}) => {        console.log(data);    })当然也可以再继续拦截request api

比如设置request api默认的host:

wxApiInterceptors({    request: {        request(params) {            const host = 'https://test.com'            if (!/^(http|\/\/)/.test(params.url)) {                params.url = host + params.url;            }            return params;        },    },});

甚至可以拦截自己的业务状态码:

wxApiInterceptors({    request: {        response(res) {            const {data: {code}} = res;            // 如果data里的code等于-1就响应为失败            if (code === -1) {                return Promise.reject(res);            }            return res;        },    },});强大的async拦截器

比如调用request api的时候都在header里带上本地储存的token,没有的话从服务器获取:

wxApiInterceptors({    request: {        async request(params) {            if (params.header === undefined) {                params.header = {};            }            let token = wx.getStorageSync('token');            if (!token) {                ({data: token} = await wx.request('/getToken'));                wx.setStorageSync('token', token);            }            params.header.token = token;            return params;        },    },});

以上就是关于"微信小程序怎么制作api拦截器 "这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

程序 成功 登录 拦截器 内容 项目 方式 制作 参数 文件 文章 知识 篇文章 强大 不便 差不多 业务 价值 使用方法 函数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 东城区网络安全部门 黄冈市网络安全活动 阿里云服务器打不开淘宝网 黑客有什么网络技术 linux 免费数据库 服务器安全基线配置脚本 南京app订制软件开发 甲方给乙方下发软件开发需求单 青海租用gpu服务器价格表 clnc需要服务器吗 中国国家网络安全部门 数据库技术与应用课程总结 英魂之刃其他服务器 网络技术群网站 海阔方舟网络技术潘多拉 重庆做游戏软件开发的电话 链工宝网络安全月知识竞赛 如何获得我的世界服务器中的金币 北京惠普服务器续保虚拟主机 数据库相关的黑话 无锡掘金网络技术有限公司 毕节市云浩网络技术有限公司 微信小程序连不上数据库 怎样用开票软件开发票 小学网络安全培训ppt 利用路由器当服务器连接硬盘 微信小程序数据库后台 防水网络技术试验设备 计算机网络安全管理论文答辩 新浪云的数据库连不上
0