Loading...

文章背景图

APIJSON:腾讯后端零代码 ORM 接口框架部署与使用指南

2026-10-25
0
- 字
- 分钟
|

APIJSON 是一种专为 API 而生的 JSON 网络传输协议,以及基于这套协议实现的 ORM 库。它为各种增删改查提供了完全自动化的万能通用接口,零代码实时满足千变万化的新增和变更需求。通过万能通用接口,前端可以定制任何数据、任何结构;大部分 HTTP 请求后端再也不用写接口了,更不用写文档了。APIJSON 由腾讯工程师 TommyLemon 发起,自 2016 年起持续维护,是国内影响力最大的零代码 ORM 库之一,被广泛应用于创业项目与内部系统,是国内零代码后端的代表项目。在传统开发模式下,前端要一个新字段,需要后端改 SQL、改接口、写文档、发版,前端再联调。APIJSON 把这一套流程压缩成:后端建好表、配好权限,前端直接在请求 JSON 里加一个字段,后端自动返回。这种模式极大降低了前后端沟通成本,也避免了文档与代码不一致的问题。对于创业项目和内部系统,APIJSON 几乎可以替代大部分手写后端接口,让小团队快速交付,把精力放在业务逻辑而不是重复的 CRUD 上。这种开发方式也被称为"零代码后端"或"协议驱动开发",在低代码/零代码浪潮中尤其受欢迎。APIJSON 解决的核心痛点是前后端协作中的接口与文档问题:前端催接口、后端写文档、联调扯皮、文档过时、接口版本兼容。在 APIJSON 模式下,后端只需要维护数据库表结构与权限规则,前端通过约定好的 JSON 请求就能完成 CRUD、连表、子查询、分组聚合等操作。官方给出的对比数据显示,在 10 张表、每表 10 个字段的中型项目中,传统 SSM/SH 方式需要约 8550 分钟(大小周超半个月),而 APIJSONBoot 仅需 320 分钟(约一下午),提速约 25 倍;在 50 张表、每表 20 个字段的大型项目中,传统方式需要 176750 分钟(超半年),APIJSONBoot 仅需 3100 分钟(约上班一周),提速 56 倍。本文基于仓库中文 README 逐节完整翻译整理,从项目背景、核心特性、环境要求、快速上手、常见问题到生态做全面说明。

一、项目官方信息

项目 信息
项目名称 APIJSON
GitHub 仓库 APIJSON/APIJSON
发起方 腾讯
开源协议 Apache License 2.0(见 LICENSE)
在线测试 apijson.cn:8080
通用文档 Document-Chinese.md
演示客户端 APIJSONApp.apk

二、官方图片与架构

APIJSON 的架构分为协议层与 ORM 层:协议层定义了一套 JSON 请求格式,表名以大写字母开头,字段名与关键词大小写敏感;ORM 层负责把 JSON 请求翻译成 SQL,自动生成查询、连表、分页、排序、聚合,并自动防 SQL 注入。封面沿用本文既有官方仓库图,不再改动。

APIJSON 同时支持关系型数据库(MySQL、PostgreSQL、SQLServer、Oracle、DB2、MariaDB、TiDB、openGauss、达梦、人大金仓等)、NoSQL 与搜索分析引擎(MongoDB、Elasticsearch、ClickHouse、Doris、StarRocks、Redis、Kafka 等),理论上所有支持 SQL 与 JDBC/ODBC 的软件都可以对接 CRUD。这种多数据源能力让 APIJSON 既能用于业务库,也能用于大数据分析场景。协议层还内置了版本管理,同一个接口在不同 version 下可以返回不同结构,前端升级时不会被旧接口阻塞。这种"协议即文档"的设计让 APIJSON 天然支持零文档开发。ORM 层会自动校验请求中的表名、字段名是否存在,避免拼写错误,也会自动处理 SQL 注入,保证安全性,避免注入攻击,保障线上数据安全。## 三、环境要求

  • Java 服务端:Java 1.8+,Spring 4.3.2+ 或 SpringBoot 1.4.0+,也支持 JFinal 3.5+、Nutz 2.4.2+、ShardingSphere 5.4.1+。
  • 数据库:MySQL 5.7+、PostgreSQL 9.5+、SQLServer 2012+、Oracle 12C+、DB2 7.1+、MariaDB 10.0+、TiDB 2.1+、达梦 7.6+、人大金仓 8.6+ 等。
  • 多语言 SDK:Go 1.18+、C# 2.1+、PHP 8.0+、Node.js ES6+、Python 3+、Rust 1.90+、Lua 5.2+。
  • 客户端:Android 4.0+、iOS 7+、Web ES6+。

APIJSON 官方还维护了多语言生态:Go、C#、PHP、Node.js、Python、Rust、Lua 都有第三方或官方 SDK,业务方可以按技术栈选择对应的服务端实现。除了 Java 主项目,Go、C#、PHP、Node.js、Python、Rust 都有社区维护的版本,覆盖了大部分后端技术栈,业务团队不需要被迫改语言,可以按现有技术栈接入。## 四、部署步骤

1. 后端上手

可以跳过本地部署,直接用官方服务器 apijson.cn:8080 测试接口。本地部署参考 APIJSON 后端上手 - Java,示例工程包含 SpringBoot、JFinal、多数据源、分库分表等多种形态,业务方可以直接 fork 改造成自己的项目,不需要从零搭建。引入依赖后配置数据库连接,执行官方提供的建表 SQL(包括 Access、Request、Function 等系统表),即可启动万能接口。Access 表控制每张表、每种角色、每种操作的访问权限;Request 表配置参数校验规则;Function 表登记自定义远程函数。这些系统表本身也通过万能接口管理,形成"用 APIJSON 管理 APIJSON"的闭环,配置本身也是数据,便于版本管理与迁移。### 2. 前端上手

可以直接使用 APIAuto 机器学习 HTTP 接口工具 或下载客户端 App。官方提供 Android、iOS、JavaScript 三端示例。

3. 下载客户端

五、使用方法

APIJSON 的请求体是一个 JSON 对象,顶层 key 是表名(大写开头),里面指定要查询的字段、条件、分页、排序、连表等。例如查询单个 User:

{
  "User": {
    "id": 1
  }
}

查询 User 列表并分页、排序、连查对应的 Moment:

{
  "[]": {
    "User": {
      "@column": "id,name,head"
    },
    "Moment": {
      "userId@": "User/id"
    }
  },
  "page": 0,
  "count": 10
}

@column 指定返回字段,userId@ 表示外键连表,[] 表示数组查询。新增、修改、删除对应在请求体中使用对应的 method 或路径,由后端 Access 表配置权限。除了基础 CRUD,APIJSON 还支持分组聚合、排序、去重、范围查询、模糊查询、子查询、跨库连表等,所有能力都通过 JSON 中的关键词表达,例如 @sort、@group、@column、! 等。前端可以在一次请求中嵌套多张表,实现"一次请求拿满屏数据",减少 HTTP 往返,对弱网环境尤其友好,能减少首屏加载时间,提升用户体验。## 六、核心特性

对于后端

  • 提供万能通用接口,大部分 HTTP API 不用再写;
  • 零代码增删改查、各种跨库连表、JOIN 嵌套子查询等;
  • 自动生成文档,不用再编写和维护,且自动静态检查;
  • 自动校验权限、自动管理版本、自动防 SQL 注入;
  • 开放 HTTP API 无需划分版本,始终保持兼容;
  • 灵活定制业务:在后端编写远程函数,可以拿到 session、version、当前 JSON 对象等,然后自定义处理。

对于前端

  • 不用再向后端催接口、求文档;
  • 数据和结构完全定制,要啥有啥;
  • 看请求知结果,所求即所得;
  • 可一次获取任何数据、任何结构;
  • 能去除多余数据,节省流量提高速度;
  • 一次请求可获取任何数据、任何结构,减少多次请求;
  • 看请求知结果,所求即所得,前端不需要猜后端字段;
  • 数据和结构完全定制,要啥有啥,后端不需要为每个字段单独写接口,大幅减少重复劳动,让后端聚焦业务。### 工程优势

  • 无第三方依赖,Jar 仅 263KB,Java 文件仅 68 个共 14864 行代码;

  • 蚂蚁集团源伞 Pinpoint 代码扫描平均每行 Bug 率低至 0.15%;
  • 自 2016 年起持续维护 9 年多,80+ 贡献者、100+ 发版、3000+ 提交;
  • GitHub 18K+ Star,在 400W Java 项目中排名前 100;
  • 腾讯内外 5 个奖项、QECon 大会与 Gitee Meetup 演讲、GitHub Trending 日周月榜大满贯。

七、常见问题(FAQ)

1. 如何定制业务逻辑? 在后端编写远程函数,可以拿到 session、version、当前 JSON 对象、参数名称等,然后对查到的数据自定义处理。

2. 如何控制权限? 在 Access 表配置校验规则,默认不允许访问,需要对每张表、每种角色、每种操作做相应配置,粒度细分到行级。

3. 如何校验参数? 在 Request 表配置校验规则 structure,提供 MUST、TYPE、VERIFY 等通用方法,可通过远程函数完全自定义。

4. 请求参数有什么注意事项? 请求 JSON 中表名、字段名、关键词及对应的值都是大小写敏感、逗号敏感、分号敏感、空格敏感、换行敏感,大部分情况不允许空格和换行,表名以大写字母开头,需严格按照设计规范调用。

5. 适用场景? 适合中小型前后端分离项目,尤其是创业项目、内部项目、低代码/零代码、小程序、BaaS、Serverless 等,覆盖社交聊天、阅读资讯、影音娱乐、办公学习等非金融类场景。

6. 有哪些公司在用? 腾讯内部有互娱、音乐、微信、云与智慧等;外部有华为、华能、百度、快手、中兴、圆通、传音等。官方维护一份使用登记清单,登记企业可加入专群优先答疑。

7. 安全如何保障? APIJSON 默认拒绝所有访问,必须在 Access 表显式配置允许;同时自动防 SQL 注入,参数校验在 Request 表集中管理。腾讯安全、蚂蚁集团源伞、奇安信代码卫士都曾提交过安全报告。

8. 性能如何? 官方文章提到腾讯业务百万数据 6 秒响应,APIJSON 经过多轮性能优化,支持连接池、缓存、批量查询等。Jar 体积小、依赖少,启动快。

9. 如何参与贡献? 提交 PR 前读 CONTRIBUTING.md。贡献者包括腾讯、微软、阿里云、字节跳动、网易、Zoom、圆通、知乎等工程师。

10. 有哪些周边工具? APIAuto 是机器学习 HTTP 接口工具,可自动生成请求代码、测试用例、接口文档,并支持一键回归测试,不需要写任何代码。

11. 路线图是什么? 见 Roadmap.md,方向是新增功能、强化安全、提高性能、增强稳定、完善文档、丰富周边、推广使用。

12. 谁在用? 腾讯 IEG、腾讯音乐、传音、社宝科技、华能贵诚信托、圆通速递、乐拼用车等。官方维护一份使用登记清单,欢迎登记,登记后可加入专群优先答疑。

13. 协议支持哪些传输? 协议本身不限 HTTP,理论上可以跑在任何 JSON 传输通道上,与其他库无冲突,对各类 Web 框架集成友好,提供 SpringBoot、JFinal 示例。

14. 许可证? Apache License 2.0,对公司、团队、个人商用、非商用都自由免费,可放心使用,无商业风险,可放心使用。 15. 如何获取帮助? 填问卷或提 Issue,登记用户与贡献者优先解答。视频教程在 B 站搜索 APIJSON,AI 问答在 deepwiki.com,MCP/Skills 在 context7。

16. 适合金融类项目吗? README 明确说明适合非金融类项目,金融类强一致、强审计场景需自行评估,建议在测试环境充分验证后再上线。

17. 如何登记使用? 在 Issue #187 登记公司信息,可加入企业用户支持专群,作者亲自优先答疑。

18. 如何贡献? 提 PR、写文章、开发生态项目都欢迎,贡献者优先获得技术支持,也可加入核心维护团队。

19. 是否收费? 完全开源免费,Apache 2.0 协议,不收取任何费用,也不要求开源衍生项目。

20. 文档在哪里? 通用文档见 Document-Chinese.md,详细导航见 Navigation.md,视频教程在 B 站,AI 问答在 deepwiki.com。

21. 如何试用? 直接访问 apijson.cn:8080,或下载 APIJSONTest.apk 体验,也可以用 APIAuto 一键测试。

22. 有哪些演讲? Gitee Meetup、QECon 全球软件质量效能大会都有官方分享,视频在 B 站,可帮助快速理解项目价值。

23. 周边生态? 有 Android、iOS、Web 客户端 Demo,还有 APIAuto 测试工具、A2API 等周边项目,覆盖开发与测试全流程。

24. 如何开始? 访问 apijson.cn:8080 在线体验,或 fork 后端示例工程本地跑起来,十分钟即可跑通第一个万能接口。

25. 版本迭代? 自 2016 年起持续维护 9 年多,100+ 发版,3000+ 提交,不断更新迭代中。

26. 总结? APIJSON 是一套让后端零代码、前端自由定制的 ORM 协议,适合想快速交付的中小型项目。

八、跳转链接

评论交流

文章目录