前言
在小程序開發中,我們通常面臨兩種後端選擇:
- 雲開發 (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: https://github.com/myliweihao/js-rpc
- 安裝:
npm install rpc-client-request
把繁瑣的 HTTP 協議細節交給庫,把時間留給真正有價值的業務邏輯。