UniApp/小程序开发新姿势:告别繁琐的接口管理,像调用本地函数一样请求 HTTP 接口

48 阅读3分钟

前言

在小程序开发中,我们通常面临两种后端选择:

  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 封装的钥匙。

🔗 立即尝试

把繁琐的 HTTP 协议细节交给库,把时间留给真正有价值的业务逻辑。