比较 API 架构选择:对个人开发中测试的六种设置进行技术评估

发布: (2025年12月29日 GMT+8 06:43)
8 min read
原文: Dev.to

Source: Dev.to

请提供您希望翻译的具体文本内容,我将按照要求将其译成简体中文并保留原有的格式、Markdown 语法以及技术术语。谢谢!

概览

当我刚开始个人开发时,我以为应用大部分可以自给自足。
然而,随着数据共享、用户认证以及多应用扩展等需求的增长,必须选择合适的后端(API)和无服务器基础设施。

在评估了多种方案——包括仅使用 Swift、Firebase、FastAPI、直接访问 Supabase 以及 Next.js——之后,我最终认为 React Native × Hono × Cloudflare Workers × Supabase 是最佳架构。

本文客观地总结了每个选项的特性,并阐述了采纳或放弃的技术原因。

选择标准

API 架构根据以下需求进行评估。

功能需求

  • API 可在 iOS 和 Android 上使用
  • 支持游客用户和已认证用户
  • 持久化数据存储(需要关系型数据库)
  • 由多个小型应用共享使用的 API

非功能需求

  • 对长期个人开发而言成本可负担
  • 在 API 层面防止未授权访问
  • 可扩展至多租户 / SaaS 场景
  • 运营和维护开销低
  • 偏好无服务器架构

Evaluated Architectures

下面对每个候选架构进行审查,并评估其满足需求的程度。

2‑1. Swift (iOS Only)

概述
仅使用 Swift 构建的原生 iOS 应用,数据本地存储。

评估

优点缺点(需求不匹配)
快速的 UI 开发不支持 Android → 未满足跨平台需求
由于原生执行,性能高无法包含关系型数据库或 API 层 → 未满足数据共享需求
仅依赖客户端安全不合适

结果:因未满足需求而被拒绝

2‑2. Swift + Firebase

概述
使用 Firebase Authentication 和 Firestore 作为后端。

评估

优点缺点(数据需求不匹配)
学习曲线低不支持 Android
通过 SDK 集成实现快速开发Firestore 难以满足关系型数据库需求(联表和规范化困难)
安全规则在大规模时变得复杂且脆弱

结果:因关系型数据库和可扩展性限制而被拒绝

2‑3. React Native + Firebase

概述
跨平台的 React Native 应用直接连接 Firebase Authentication 和 Firestore。

评估

优点缺点(API 需求不匹配)
跨平台支持Firestore 未满足关系型数据库需求
开发速度极快直接客户端访问阻碍了构建完整的 API 逻辑层
审计日志、签名以及高级安全逻辑无法在服务器端强制执行

结果:因安全架构不足而被拒绝

2‑4. React Native + FastAPI + AWS

概述
使用 FastAPI(Python)作为 API 层,配合 AWS 的 RDS、Lambda、VPC 等服务。

评估

优点缺点(成本不匹配)
企业级安全设计一旦引入 RDS、VPC 以及监控后,对个人开发而言显得过度
业务逻辑高度灵活运营成本高且固定支出大
支持多种数据库(PostgreSQL、MySQL、Aurora)即使是无服务器方案,也会因 API Gateway 和 CloudWatch 累计费用

结果:因性价比不佳而被拒绝

2‑5. React Native + Supabase (Direct Client Access)

概述
React Native 直接连接 Supabase(PostgreSQL + RLS)。

评估

优点缺点(无服务器层)
完整的关系型数据库支持没有 API 层来实现业务逻辑
通过行级安全(RLS)提供基础安全客户端侧的密钥管理风险大
作为多应用共享后端的能力不足

结果:因安全和架构限制而被拒绝

2‑6. React Native + Next.js (Vercel) + Supabase

概述
使用 Next.js API Routes 与 Vercel Edge 结合 KV 缓存构建 API。

评估

优点缺点(成本与用途不匹配)
Edge Runtime 提供快速响应SSR / RSC 计费可能快速耗尽免费额度
简单的 KV 缓存当仅作 API 使用时,Next.js 的优势有限
Web 与 API 的无缝集成与 Workers 相比,针对 API 工作负载的成本效率较低

结果:因成本效率问题而被拒绝

2‑7. React Native + Hono + Cloudflare Workers + Supabase (Final Choice)

概述
Hono 在 Cloudflare Workers 上运行作为 API 层。Supabase(PostgreSQL + RLS)作为主数据存储,Workers KV 用于缓存。

采用原因

  1. 满足安全需求

    • 在 API 层进行 JWT 验证、请求签名和限流
    • 通过 Supabase RLS 实现深度防御
    • 可在前端部署 Cloudflare WAF
    • 无需将 Supabase 的匿名密钥分发给客户端
  2. 低成本

    • Workers 的免费额度足以支撑大多数个人或小型项目的请求量
    • KV 缓存进一步降低对数据库的直接访问次数,节约费用

Source:

free under ~100 k requests/month

  • KV and caching reduce Supabase query volume
  • Zero fixed operational cost
  1. High Scalability
  • API modularization suitable for multi‑app expansion
  • Hono provides Express‑like ergonomics with high performance
  • Serverless scaling removes infrastructure concerns
  1. High Development Efficiency
  • Workers + Hono are optimized for API‑only use
  • Simple middleware composition
  • Smooth integration with Supabase

Result:Adopted as it best satisfies both technical and non‑functional requirements

架构图

[ React Native App ]  [ Cloudflare Workers (Hono) ]  [ Supabase (PostgreSQL + RLS) ]
                                   |
                                   v
                               [ Workers KV (cache) ]

详细图

        |
      HTTPS
        |
[ Cloudflare Workers (Hono API) ]
        |
        +--> JWT Verify -----> [ Supabase Auth ]
        |
        +--> SQL + RLS ------> [ Supabase PostgreSQL ]
        |
        +--> Rate Limit -----> [ Workers KV ]

比较表

安全性、成本和可扩展性是基于本项目假设的主观评估。

架构RDB安全性成本API 可扩展性综合
Swift拒绝
Swift + Firebase拒绝
RN + Firebase拒绝
RN + FastAPI + AWS拒绝
RN + Supabase (Direct)拒绝
RN + Next.js + Vercel拒绝
RN + Hono + Workers + Supabase极低采用

Summary

本文比较了个人发展项目的多种 API 架构,并根据功能性和非功能性需求对每个选项进行评估。

最终选择的 React Native × Cloudflare Workers × Hono × Supabase 之所以脱颖而出,是因为:

  • 强大的 API 级别安全控制
  • 通过 Supabase 及行级安全(RLS)提供可靠的关系型数据库支持
  • 通过 Cloudflare Workers 实现卓越的成本效益
  • 灵活的无服务器扩展能力
  • 结构适合多应用扩展。
Back to Blog

相关文章

阅读更多 »