60 KiB
Tencent is pleased to support the open source community by making APIJSON available.
Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
This source code is licensed under the Apache License Version 2.0
APIJSON
🏆 零代码、全功能、强安全 ORM 库 🚀
后端接口和文档零代码,前端(客户端) 定制返回 JSON 的数据和结构
导航目录: 项目简介 上手使用 社区生态 完整详细的导航目录 点这里查看
APIJSON 是一种专为 API 而生的 JSON 网络传输协议 以及 基于这套协议实现的 ORM 库。
为各种增删改查提供了完全自动化的万能通用接口,零代码实时满足千变万化的各种新增和变更需求。
能大幅降低开发和沟通成本,简化开发流程,缩短开发周期。
适合中小型前后端分离的项目,尤其是 创业项目、内部项目、低代码/零代码、小程序、BaaS、Serverless 等。
通过万能通用接口,前端可以定制任何数据、任何结构。
大部分 HTTP 请求后端再也不用写接口了,更不用写文档了。
前端再也不用和后端沟通接口或文档问题了。再也不会被文档各种错误坑了。
后端再也不用为了兼容旧接口写新版接口和文档了。再也不会被前端随时随地没完没了地烦了。
特点功能
对于后端
- 提供万能通用接口,大部分 HTTP API 不用再写
- 零代码增删改查、各种跨库连表、JOIN 嵌套子查询等
- 自动生成文档,不用再编写和维护,且自动静态检查
- 自动校验权限、自动管理版本、自动防 SQL 注入
- 开放 HTTP API 无需划分版本,始终保持兼容
对于前端
- 不用再向后端催接口、求文档
- 数据和结构完全定制,要啥有啥
- 看请求知结果,所求即所得
- 可一次获取任何数据、任何结构
- 能去除多余数据,节省流量提高速度
APIJSON 接口展示
Postman 展示 APIJSON
APIAuto 展示 APIJSON
使用 APIAuto-机器学习接口工具 来管理和测试 HTTP API 可大幅 减少传参错误、提升联调效率
(注意网页工具界面是 APIAuto,里面的 URL+JSON 才是 APIJSON 的 HTTP API):
APIJSON 多表关联查询、结构自由组合,APIAuto 多个测试账号、一键共享测试用例
APIAuto 自动生成前端(客户端)请求代码 和 Python 测试用例代码,一键下载
APIAuto 自动保存请求记录、自动生成接口文档,可添加常用请求、快捷查看一键恢复
APIAuto 一键自动接口回归测试,不需要写任何代码(注解、注释等全都不要)
一图胜千言 - APIJSON 部分基础功能概览
APIJSON App 演示
使用 APIJSON + ZBLibrary 开发的 Android 客户端 Demo (以下 Gif 图看起来比较卡,实际上运行很流畅):
APIJSON 分享演讲
APIJSON-零代码接口与文档 ORM 库(国际开源谷 Gitee Meetup)
https://www.bilibili.com/video/BV1Tv411t74v
APIJSON 和 APIAuto-零代码开发和测试(QECon 全球软件质量&效能大会)
https://www.bilibili.com/video/BV1yv411p7Y4
为什么选择 APIJSON?
前后端 关于接口的 开发、文档、联调 等 10 大痛点解析
https://github.com/Tencent/APIJSON/wiki
- 解决十大痛点 (可帮前后端开发大幅提振开发效率、强力杜绝联调扯皮、巧妙规避文档缺陷、非常节省流量带宽)
- 开发提速很大 (CRUD 零代码热更新全自动,APIJSONBoot 对比 SSM、SSH 等保守估计可提速 20 倍以上)
- 腾讯官方开源 (使用 GitHub、Gitee、工蜂 等平台的官方账号开源,微信公众号、腾讯云+社区 等官方公告)
- 社区影响力大 (GitHub 17K+ Star 在 400W Java 项目排名前 100,远超 FLAG, BAT 等国内外绝大部分开源项目)
- 各项荣誉成就 (腾讯内外 5 个奖项、腾讯开源前七、腾讯后端 Star 第一、Trending 日周月榜大满贯 等)
- 多样用户案例 (腾讯内有互娱、音乐、微信、云与智慧,外部有华为、华能、百度、快手、中兴、圆通、传音等)
- 适用场景广泛 (社交聊天、阅读资讯、影音娱乐、办公学习 等各种 App、网站、小程序、公众号 等非金融类项目)
- 周边生态丰富 (Android, iOS, Web 等各种 Demo、继承 JSON 的海量生态、零代码 接口测试 和 单元测试 工具等)
- 文档视频齐全 (项目介绍、快速上手、安装部署 等后端、前端、客户端的 图文解说、视频教程、代码注释 等)
- 功能丰富强大 (增删改查、分页排序、分组聚合、各种条件、各种 JOIN、各种子查询、跨库连表 等零代码实现)
- 使用安全简单 (自动增删改查、自动生成文档、自动管理版本、自动控制权限、自动校验参数、自动防 SQL 注入)
- 灵活定制业务 (在后端编写 远程函数,可以拿到 session、version、当前 JSON 对象 等,然后自定义处理)
- 高质可靠代码 (代码严谨规范,商业分析软件源伞 Pinpoint 代码扫描报告平均每行代码 Bug 率低至 0.15%)
- 兼容各种项目 (协议不限 HTTP,与其它库无冲突,对各类 Web 框架集成友好且提供 SpringBoot, JFinal 的示例)
- 工程轻量小巧 (仅依赖 fastjson,Jar 仅 280KB,Java 文件仅 59 个共 13719 行代码,例如 APIJSONORM 4.3.1)
- 多年持续迭代 (自 2016 年起已连续维护 7 年多,60+ 贡献者、90+ 发版、3000+ 提交,不断更新迭代中...)
按照一般互联网中小型项目情况可得出以下对比表格:
表数量 T | 平均每表字段数 C | SSMH 按快估计 | APIJSONBoot 按慢估计 | APIJSONBoot 提速倍数 |
---|---|---|---|---|
1 | 3 | 179 min(约一上午) | 11 min(约十分钟) | 15.27 |
5 | 4 | 1935 min(约朝九晚六一周) | 70 min(约一小时) | 26.64 |
10 | 10 | 8550 min(大小周超半个月) | 320 min(约一下午) | 25.72 |
20 | 15 | 31900 min(约 996 两个月) | 940 min(约上班两天) | 32.94 |
50 | 20 | 176750 min(11117 超半年) | 3100 min(约上班一周) | 56.02 |
用户反馈
腾讯 IEG 数据产品开发组负责人 xinlin: “腾讯的 APIJSON 开源方案,它可以做到零代码生成接口和文档,并且整个生成过程是自动化。当企业有元数据的时候,马上就可以获得接口”
腾讯科技 后台开发高级工程师 雷大锤: “可以抽出时间来看apijson了,这个可以为T10做准备,也是业界很火的东西,可以提升个人影响力!”
腾讯 bodian520: “在调试GET、POST、PUT接口时遇到了一些问题,把个人的摸索经验分享一下,希望作者能梳理下文档,方便我们更好的接入”
华为 minshiwu: “demo工程,默认使用apijson-framework,可以做到无任何配置即可体验apijson的各种能力。”
字节跳动 qiujunlin: “初次见到这个项目,觉得太惊艳了,眼前一亮。给我的感受是,项目大大简化了开发流程,开发效率提升了很多倍。”
百度智慧城市研发 lpeng: “很兴奋的发现APIJSON很适合我们的一个开发场景,作为我们协议定义的一部分”
中兴 duyijiang: “感谢腾讯大大提供的框架,很好用”
https://github.com/Tencent/APIJSON/issues/132#issuecomment-1106669540
常见问题
1.如何定制业务逻辑?
在后端编写 远程函数,可以拿到 session、version、当前 JSON 对象、参数名称 等,然后对查到的数据自定义处理
https://github.com/Tencent/APIJSON/issues/101
2.如何控制权限?
在 Access 表配置校验规则,默认不允许访问,需要对 每张表、每种角色、每种操作 做相应的配置,粒度细分到行级
https://github.com/Tencent/APIJSON/issues/12
3.如何校验参数?
在 Request 表配置校验规则 structure,提供 MUST、TYPE、VERIFY 等通用方法,可通过 远程函数 来完全自定义
https://github.com/Tencent/APIJSON/wiki#%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86
更多常见问题及提问前必看
https://github.com/Tencent/APIJSON/issues/36
注意事项
请求参数 JSON 中表名、字段名、关键词及对应的值都是大小写敏感、逗号敏感、分号敏感、空格敏感、换行敏感,
大部分情况都不允许空格和换行,表名以大写字母开头,不要想当然,请严格按照 设计规范 来调用 API !
#181
导航目录: 项目简介 上手使用 社区生态 完整详细的导航目录 点这里查看
快速上手
1.后端上手
可以跳过这个步骤,直接用APIJSON服务器IP地址 apijson.cn:8080 来测试接口。
见 APIJSON后端上手 - Java
2.前端上手
可以跳过这个步骤,直接使用 APIAuto-机器学习HTTP接口工具 或 下载客户端App。
见 Android 或 iOS 或 JavaScript
下载客户端 App
仿微信朋友圈动态实战项目
APIJSONApp.apk
测试及自动生成代码工具
APIJSONTest.apk
开源许可
使用 Apache License 2.0,对 公司、团队、个人 等 商用、非商用 都自由免费且非常友好,请放心使用和登记
使用登记
如果您在使用 APIJSON,请让我们知道,您的使用对我们非常重要(新的按登记顺序排列、专群优先答疑解惑):
https://github.com/Tencent/APIJSON/issues/187
- 腾讯科技有限公司
- 腾讯音乐娱乐集团
- 深圳市传音通讯有限公司
- 社宝信息科技(上海)有限公司
- 华能贵诚信托有限公司
- 投投科技
- 圆通速递
- 乐拼科技
- 珠海采筑电子商务有限公司
- 爱投斯智能技术(深圳)有限公司
- 邻盛科技(武汉)有限公司
- 上海麦市信息科技有限公司
- 上海翊丞互联网科技有限公司
- 上海直真君智科技有限公司
- 北明软件有限公司
贡献者们
主项目 APIJSON 的贡献者们(6 个腾讯工程师、1 个微软工程师、1 个阿里云工程师、1 个字节跳动工程师、1 个网易工程师、1 个 Zoom 工程师、1 个圆通工程师、1 个知乎基础研发架构师、1 个智联招聘工程师、1 个美国加州大学学生、3 个 SUSTech 学生等):
https://github.com/Tencent/APIJSON/blob/master/CONTRIBUTING.md
生态周边项目的作者们(2 个腾讯工程师、1 个 BAT 技术专家、1 个微软工程师、2 个字节跳动工程师、1 个神州数码工程师&Apache dubbo2js 作者 等):
https://github.com/search?o=desc&q=apijson&s=stars&type=Repositories
https://search.gitee.com/?skin=rec&type=repository&q=apijson&sort=stars_count
还有为 APIJSON 扫描代码贡献 Issue 的 奇安信代码卫士 和 源伞科技
感谢大家的贡献。
统计分析
腾讯、华为、阿里巴巴、美团、字节跳动、百度、京东、网易、快手等和 Google, Apple, Microsoft, Amazon, Paypal, IBM, Shopee 等
数百名知名大厂员工点了 Star,也有腾讯、华为、字节跳动、Microsoft、Zoom 等不少知名大厂员工提了 PR/Issue,感谢大家的支持~
根据开源指南针报告,APIJSON Java 版已经是国内顶级、国际一流的 Java 开源项目了 #518
规划及路线图
新增功能、强化安全、提高性能、增强稳定、完善文档、丰富周边、推广使用
https://github.com/Tencent/APIJSON/blob/master/Roadmap.md
理论上所有支持 SQL 与 JDBC/ODBC 的软件,都可以用本项目对接 CRUD,待测试:
OceanBase, Spark(可用 Hive 对接), Phoenix(延伸支持 HBase)
我要赞赏
创作不易,坚持更难,右上角点 ⭐Star 来支持/收藏下吧,谢谢 ^_^
https://github.com/Tencent/APIJSON
导航目录: 项目简介 上手使用 社区生态 完整详细的导航目录 点这里查看
技术交流
如果有什么问题或建议可以 填问卷 或 提 Issue,交流技术,分享经验。
如果你解决了某些 bug,或者新增了一些功能,欢迎 贡献代码,感激不尽~
https://github.com/Tencent/APIJSON/blob/master/CONTRIBUTING.md
开发者也是人,也需要工作、休息、恋爱、陪伴家人、走亲会友等,也有心情不好和身体病痛,
往往没有额外的时间精力顾及一些小问题,请理解和支持,开源要大家参与贡献才会更美好~
少数个人的热情终有被耗尽的一天,只有大家共同建设和繁荣社区,才能让开源可持续发展!
开发者时间精力有限,原则上优先解决 登记用户 和 贡献者 的问题,
不解决 文档/视频/常见问题 已明确说明、描述简陋 或 态度无礼 的问题!
如果你已经多次得到帮助,却仍然只索取不贡献,那就别指望大家再帮你!
私聊作者请教技术问题 或者 频繁在互助群 @ 作者 可能会被拉黑/禁言/踢群,请尊重和理解,谢谢!
如果你 提 PR 登记了自己使用 APIJSON 的公司,可以加 企业用户支持专群,作者亲自且优先答疑,
作者只有解答完了这个专群里的全部问题,才看情况解答 Issue/问卷 里的问题(对 Issue/问卷 不保证解答、更不保证及时);
之前的几个互助群,由于大多数问题 在文档/Issue 已有答案却反复提 或者 缺少必要信息要来来回回沟通问清细节 已浪费太多时间,
甚至有白嫖还把自己当大爷的自私自利伸手党输出情绪,我们不再支持,建议未登记企业的用户 填问卷 或 提 Issue。
如果你为 APIJSON 做出了以下任何一个贡献,我们将优先为你答疑解惑:
提交了 PR 且被合并、提交了优质 Issue、发表了优质文章、开发了可用的生态项目,
Issue/问卷 一般解答顺序:贡献者 > 帮助他人的用户 > 提供任职企业的用户 > 其他用户。
相关推荐
腾讯业务百万数据 6s 响应,APIJSON 性能优化背后的故事
APIJSON教程(一):上手apijson项目,学习apijson语法,并实现持久层配置
APIJSON-零代码接口和文档 JSON 协议 与 ORM 库
APIJSON在mac电脑环境下配置去连接SQL Server
apijson在同一个接口调用中 使用远程函数写入更新时间和创建时间
APIJSON 代码分析(二)AbstractParser类(解析器)
APIJSON 代码分析(四:AbstractObjectParser源码阅读)
APIJSON 代码分析 AbstractSQLConfig 第二篇
APIJSON 代码分析(六)APIJSON—Verifier检查类
APIJSON 代码分析(四)AbstractSQLExecutor—SQL执行器
生态项目
APIJSON-Demo APIJSON 各种语言、各种框架 的 使用示例项目、上手文档、测试数据 SQL 文件 等
apijson-orm APIJSON ORM 库,可通过 Maven, Gradle 等远程依赖
apijson-framework APIJSON 服务端框架,通过数据库表配置角色权限、参数校验等,简化使用
apijson-router APIJSON 的路由插件,可控地对公网暴露类 RESTful 简单接口,内部转成 APIJSON 格式请求来执行
apijson-column APIJSON 的字段插件,支持 字段名映射 和 !key 反选字段
apijson-milvus APIJSON 的 Milvus AI 向量数据库插件
apijson-influxdb APIJSON 的 InfluxDB 物联网时序数据库插件
apijson-mongodb APIJSON 的 MongoDB NoSQL 数据库插件
apijson-cassandra APIJSON 的 Cassandra NoSQL 数据库插件
APIAuto 敏捷开发最强大易用的接口工具,机器学习零代码测试、生成代码与静态检查、生成文档与光标悬浮注释
UnitAuto 机器学习零代码单元测试平台,零代码、全方位、自动化 测试 方法/函数 的正确性、可用性和性能
SQLAuto 智能零代码自动化测试 SQL 语句执行结果的数据库工具,一键批量生成参数组合、快速构造大量测试数据
UIGO 📱 零代码快准稳 UI 智能录制回放平台 🚀 自动兼容任意宽高比分辨率屏幕、自动精准等待网络请求,录制回放快、准、稳!
apijson-doc APIJSON 官方文档,提供排版清晰、搜索方便的文档内容展示,包括设计规范、图文教程等
APIJSONdocs APIJSON 英文文档,提供排版清晰的文档内容展示,包括详细介绍、设计规范、使用方式等
apijson.org APIJSON 官方网站,提供 APIJSON 的 功能简介、登记用户、作者与贡献者、相关链接 等
APIJSON.NET C# 版 APIJSON ,支持 MySQL, PostgreSQL, SQL Server, Oracle, SQLite
apijson-go Go 版 APIJSON , 基于Go(>=1.18) + GoFrame2, 支持查询、单表增删改、权限管理等
apijson-go Go 版 APIJSON ,支持单表查询、数组查询、多表一对一关联查询、多表一对多关联查询 等
apijson-hyperf PHP 版 APIJSON,基于 Hyperf 支持 MySQL
APIJSON-php PHP 版 APIJSON,基于 ThinkPHP,支持 MySQL, PostgreSQL, SQL Server, Oracle 等
apijson-php PHP 版 APIJSON,基于 ThinkPHP,支持 MySQL, PostgreSQL, SQL Server, Oracle 等
apijson-node 字节跳动工程师开源的 Node.ts 版 APIJSON,提供 nestjs 和 typeorm 的 Demo 及后台管理
uliweb-apijson Python 版 APIJSON,支持 MySQL, PostgreSQL, SQL Server, Oracle, SQLite 等
APIJSONParser 第三方 APIJSON 解析器,将 JSON 动态解析成 SQL
FfApiJson 用 JSON 格式直接生成 SQL,借鉴 APIJSON 支持多数据源
APIJSON-ToDo-Demo 一个简单的 todo 示例项目,精简数据,简化上手流程,带自定义鉴权逻辑
apijson-learn APIJSON 学习笔记和源码解析
apijson-practice BAT 技术专家开源的 APIJSON 参数校验注解 Library 及相关 Demo
apijson-db2 微软工程师接入 IBM 数据库 DB2 的 APIJSON 使用 Demo
APIJSONDemo 字节跳动工程师接入 ClickHouse 的 APIJSON 使用 Demo
APIJSONDemo_ClickHouse APIJSON + SpringBoot 连接 ClickHouse 使用的 Demo
APIJSONBoot_Hive APIJSON + SpringBoot 连接 Hive 使用的 Demo
apijson-sample APIJSON 简单使用 Demo 及教程
apijson-examples APIJSON 的前端、业务后端、管理后端 Demo
apijson-ruoyi APIJSON 和 RuoYi 框架整合,实现零代码生成页面模板接口,在线维护 APIJSON 数据库配置等
light4j 整合 APIJSON 和微服务框架 light-4j 的 Demo,同时接入了 Redis
SpringServer1.2-APIJSON 智慧党建服务器端,提供 上传 和 下载 文件的接口
apijson_template APIJSON Java 模版,使用 gradle 管理依赖和构建应用
api-json-demo 基于 APIJSON,实现低代码写 CURD 代码,代替传统 ORM 框架,适配 Oracle 事务
ApiJsonByJFinal 整合 APIJSON 和 JFinal 的 Demo
apijson-go-demo apijson-go demos,提供 3 个从简单到复杂的不同场景 Demo
apijson-builder 一个方便为 APIJSON 构建 RESTful 请求的 JavaScript 库
apijson-go-ui apijson-go UI 界面配置, 支持权限管理、请求规则配置等
AbsGrade 列表级联算法,支持微信朋友圈单层评论、QQ空间双层评论、百度网盘多层(无限层)文件夹等
APIJSON-Android-RxJava 仿微信朋友圈动态实战项目,ZBLibrary(UI) + APIJSON(HTTP) + RxJava(Data)
Android-ZBLibrary Android MVP 快速开发框架,Demo 全面,注释详细,使用简单,代码严谨
apijson-dynamic-datasource 基于APIJSON,动态切换数据源、同一数据源批量操作事务一致性DEMO
xyerp 基于ApiJson的低代码ERP
quick-boot 基于 Spring Cloud 2022、Spring Boot 3、AMIS 和 APIJSON 的低代码系统。
apijson-query-spring-boot-starter 一个快速构建 APIJSON 查询条件的插件
apijson-builder 简单包装 APIJSON,相比直接构造查询 JSON 更好记,ts 编写,调整了一些参数和使用方式
lanmuc 后端低代码生产接口的平台,兼容配置式接口和编写式接口,可做到快速生产接口,上线项目
感谢热心的作者们的贡献,点 ⭐Star 支持下他们吧~
腾讯犀牛鸟开源人才培养计划
https://github.com/Tencent/APIJSON/issues/229
qiujunlin 2.接入 presto/hive/clickhouse/db2 任意一个
APIJSON 接入 clickhouse 使用demo
https://github.com/qiujunlin/APIJSONDemo
zhangshukun 2.接入 presto/hive/clickhouse/db2 任意一个
APIJSON-Demo接入db2
https://github.com/andream7/apijson-db2
hanxu 1.完善入门介绍视频
重构 APIJSON 文档
https://hanxu2018.github.io/APIJSON-DOC/
文档源码
https://github.com/HANXU2018/APIJSON-DOC
配套评论区 apijson-doc-Comment
https://github.com/HANXU2018/apijson-doc-Comment
chenyanlan 2.接入 presto/hive/clickhouse/db2 任意一个
APIJSON + SpringBoot连接ClickHouse使用的Demo
https://github.com/chenyanlann/APIJSONDemo_ClickHouse
zhaoqiming 1.完善入门介绍视频
APIJSON 后端教程(1):简介 https://www.bilibili.com/video/BV1vL411W7yd
APIJSON 后端教程(2):数据库 https://www.bilibili.com/video/BV1eB4y1N77s
APIJSON 后端教程(3):Demo https://www.bilibili.com/video/BV1FX4y1c7ug
APIJSON 后端教程(4):Boot https://www.bilibili.com/video/BV18h411z7FK
APIJSON 后端教程(5):Final https://www.bilibili.com/video/BV1GM4y1N7XJ
APIJSON 后端教程(6):uliweb_apijson https://www.bilibili.com/video/BV1yb4y1S79v/
APIJSON 后端教程(7):问题答疑 https://www.bilibili.com/video/BV1dQ4y1h7Df
APIJSON配套文档: https://github.com/kenlig/apijsondocs
huwen 2.接入 presto/hive/clickhouse/db2 任意一个
APIJSON-Demo 接入presto https://github.com/hclown9804/APIJSONDemo_presto
zhanghaoling 1.完善入门介绍视频
APIJSON结合已有项目,简化开发流程 https://github.com/haolingzhang1/APIJson--demo
说明文档 https://github.com/haolingzhang1/APIJson--demo/tree/main/APIJson集成项目说明
(2)单表配置 https://github.com/haolingzhang1/APIJson--demo/blob/main/APIJson集成项目说明/APIJson集成现有项目(2)-%20单表配置.pdf
zhoukaile 1.完善入门介绍视频
视频链接:https://www.bilibili.com/video/BV1Uh411z7kZ/
文档链接:https://gitee.com/funkiz/apijson_camp
lintao 1.完善入门介绍视频
APIJSON 上手教程:https://www.bilibili.com/video/BV1Pq4y1n7rJ
持续更新
https://github.com/Tencent/APIJSON/commits/master
工蜂主页
https://git.code.tencent.com/Tencent_Open_Source/APIJSON