博客 / 詳情

返回

UniApp/小程序開發新姿勢:告別繁瑣的接口管理,像調用本地函數一樣請求 HTTP 接口

前言

在小程序開發中,我們通常面臨兩種後端選擇:

  1. 雲開發 (TCB):使用 wx.cloud.callFunction,體驗很好,像調本地函數一樣。
  2. 傳統 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

    • 只需要在該語言中實現一個簡單的路由分發器(解析 rpcModulerpcAction 參數),即可對接前端的 RPC 調用。

🎯 總結

rpc-client-request 填補了小程序 HTTP 開發體驗的一塊短板。

它讓那些 因為業務原因無法使用雲開發,但又眼饞雲開發便捷性 的開發者,找到可以在傳統架構中“偷懶”的辦法。

  • 如果你是 UniApp 開發者,它是你的跨端神器。
  • 如果你是 原生小程序 開發者,它是你擺脱 wx.request 封裝的鑰匙。

🔗 立即嘗試

  • GitHub: https://github.com/myliweihao/js-rpc
  • 安裝: npm install rpc-client-request

把繁瑣的 HTTP 協議細節交給庫,把時間留給真正有價值的業務邏輯。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.