前言
在小程序开发中,我们通常面临两种后端选择:
- 云开发 (TCB):使用
wx.cloud.callFunction,体验很好,像调本地函数一样。 - 传统 HTTP 后端 (Node.js/Java/Go/PHP...):使用
wx.request。
绝大多数企业级项目,依然在使用传统 HTTP 后端。 于是,我们不得不面对那熟悉的“封装地狱”:
- 封装
request.js,处理 baseURL 和拦截器。 - 在
api/目录下写一堆export const xxx = () => request.get('/api/v1/...')。 - 组件里调用时,还得关心参数是放
data还是params,URL 有没有写错。
既然云开发体验那么好,为什么 HTTP 后端不能照搬呢?
今天,js-rpc 生态迎来了新成员 —— rpc-client-request。
它专为 微信小程序 和 UniApp 设计,让你在对接传统 HTTP 后端时,也能享受“零配置、零胶水代码”的极致 RPC 体验。
🚀 什么是 rpc-client-request?
它是 js-rpc 生态中的 HTTP 客户端适配器。
- 底层:基于小程序原生的
wx.request或 UniApp 的uni.request。 - 上层:提供标准化的 RPC 调用代理。
- 适用场景:后端是 Node.js (rpc-server-node)、腾讯云 SCF (rpc-server-scf)、或者任何支持 JSON 通信的 HTTP 服务。
🆚 体验对比
😭 传统模式 (wx.request)
你需要在 api.js 里写一堆定义:
// api/user.js
const request = require('../utils/request');
// 哪怕只是为了一个简单的查询,也要写这么多
export function getUserProfile(uid) {
return request({
url: '/user/profile', // 万一写错字母...
method: 'POST', // 还要纠结用 GET 还是 POST
data: { uid }
});
}
😍 RPC 模式 (rpc-client-request)
没有 api.js,没有 URL 定义,直接在页面里调用:
import rpc from '../../utils/rpc';
Page({
async onLoad() {
try {
// ✨ 魔法时刻
// 自动发 POST 请求到 http://api.com/user/profile
const user = await rpc.user.getProfile(10086);
this.setData({ user });
} catch (err) {
console.error('请求失败', err);
}
}
})
代码量减少 50%,心智负担减少 90%。
🛠️ 核心特性
1. 双模支持:小程序 & UniApp 通吃
无论你是原生微信小程序开发者,还是 UniApp 跨端开发者,它都能完美适配。
- 微信小程序:自动检测使用
wx.request。 - UniApp:自动检测使用
uni.request。
2. 智能的 Token 管理
在小程序里,Token 通常存在 Storage 中。rpc-client-request 允许你配置 函数式 Headers,完美解决 Token 动态获取问题。
import { create } from 'rpc-client-request';
const rpc = create({
url: 'https://api.myserver.com', // 你的后端地址
// 每次请求前都会执行,确保拿到最新的 Token
headers: () => {
const token = wx.getStorageSync('token');
return {
'Authorization': token ? `Bearer ${token}` : ''
};
}
});
3. 极速初始化
不用安装 Axios,不用引入 adapter。
在 utils/rpc.js 中一行初始化:
import { create } from 'rpc-client-request';
// 导出实例,全项目通用
export default create({
url: 'https://your-backend-api.com'
});
🌍 服务端如何配合?
要实现这种“不写路由”的体验,服务端需要配合做一点点改变(支持 JSON Body 解析和分发)。
我们提供了配套的轻量级服务端 SDK:
- 如果你用 Node.js:请使用
rpc-server-node。- 它能帮你一行代码启动一个支持 RPC 的 HTTP 服务。
- 如果你用 Java/Go/PHP:
- 只需要在该语言中实现一个简单的路由分发器(解析
rpcModule和rpcAction参数),即可对接前端的 RPC 调用。
- 只需要在该语言中实现一个简单的路由分发器(解析
🎯 总结
rpc-client-request 填补了小程序 HTTP 开发体验的一块短板。
它让那些 因为业务原因无法使用云开发,但又眼馋云开发便捷性 的开发者,找到可以在传统架构中“偷懒”的办法。
- 如果你是 UniApp 开发者,它是你的跨端神器。
- 如果你是 原生小程序 开发者,它是你摆脱
wx.request封装的钥匙。
🔗 立即尝试
- GitHub: github.com/myliweihao/…
- 安装:
npm install rpc-client-request
把繁琐的 HTTP 协议细节交给库,把时间留给真正有价值的业务逻辑。