news 2026/7/3 20:13:11

零代码打造全功能后端 API 的 JSON 传输协议

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
零代码打造全功能后端 API 的 JSON 传输协议

APIJSON

APIJSON 是一个功能强大的 JSON 传输协议和 ORM 库,它允许前端(客户端)定制返回 JSON 的数据和结构,而后端无需编写任何代码即可提供 API 接口和文档。该项目由腾讯开源,已成为腾讯内部使用广泛的开源项目之一。

功能特性

对于前端

  • 灵活定制返回内容:可以指定需要返回的字段、表关联、过滤条件等,无需后端为每个需求单独开发接口
  • 减少请求次数:单次请求可以获取多个相关对象或数组,减少网络请求次数
  • 结构清晰易用:使用 JSON 格式,结构清晰,易于理解和调试

对于后端

  • 零代码开发:无需为每个表编写增删改查接口,只需配置数据库表和权限即可
  • 自动生成文档:接口文档自动生成,无需手动维护
  • 支持多种数据库:支持 MySQL、PostgreSQL、SQL Server、Oracle、DB2、TiDB、MariaDB 等多种数据库
  • 强大的查询能力:支持简单查询、统计、分组、排序、聚合、比较、筛选字段、字段别名等功能
  • 安全可靠:提供完整的权限控制和参数校验机制

安装指南

Maven 依赖

pom.xml中添加 JitPack 仓库和 APIJSON 依赖:

<repositories><repository><id>jitpack.io</id><url>https://jitpack.io</url></repository></repositories><dependency><groupId>com.github.Tencent</groupId><artifactId>APIJSON</artifactId><version>LATEST</version></dependency>

Gradle 依赖

在项目根目录build.gradle中添加:

allprojects { repositories { maven { url 'https://jitpack.io' } } }

在模块build.gradle中添加:

dependencies { implementation 'com.github.Tencent:APIJSON:latest' }

环境要求

  • JDK 1.8+
  • MySQL 5.7+ / PostgreSQL 9.5+ / Oracle 12C+ 或其他支持的数据库
  • Maven 3.0+ 或 Gradle

使用说明

基础查询示例

获取单个用户

请求:

{"User":{"id":38710}}

响应:

{"User":{"id":38710,"sex":0,"name":"TommyLemon","tag":"Android&Java","head":"http://static.oschina.net/uploads/user/1218/2437072_100.jpg?t=1461076033000","date":1485948110000,"pictureList":["http://static.oschina.net/uploads/user/1218/2437072_100.jpg?t=1461076033000","http://common.cnblogs.com/images/icon_weibo_24.png"]},"code":200,"msg":"success"}
获取用户列表

请求:

{"[]":{"count":3,"User":{"@column":"id,name"}}}

响应:

{"[]":[{"User":{"id":38710,"name":"TommyLemon"}},{"User":{"id":70793,"name":"Strong"}},{"User":{"id":82001,"name":"Android"}}],"code":200,"msg":"success"}

复杂查询示例

支持关联查询、分组、排序、聚合函数等复杂操作:

{"Moment":{"@column":"id,userId,content","id{}":">0","@order":"id-"},"User":{"@column":"id,name","id@":"/Moment/userId"}}

事务操作

一个 JSON 请求可以同时支持新增、修改、删除、查询等多种操作:

{"@post":"Moment,Comment:cArray[],User:u","Moment":{"content":"测试内容"},"Comment:cArray[]":[{"content":"评论1"}],"@get":"User","User:u":{"id":82001}}

核心代码

JSON 工具类

/*Copyright (C) 2020 Tencent. All rights reserved.*/packageapijson;importjava.util.Collection;importjava.util.LinkedHashMap;importjava.util.List;importjava.util.Map;/** * JSON工具类 防止解析时异常 * @author Lemon */publicclassJSON{staticfinalStringTAG="JSON";publicstaticJSONParser<?extendsMap<String,Object>,?extendsList<Object>>DEFAULT_JSON_PARSER;// 创建JSON对象publicstatic<MextendsMap<String,Object>>McreateJSONObject(){returnDEFAULT_JSON_PARSER.createJSONObject();}// 解析JSON字符串publicstaticMap<String,Object>parseObject(Objectjson){returnDEFAULT_JSON_PARSER.parseObject(json);}// 将对象转换为JSON字符串publicstaticStringtoJSONString(Objectobj){returnDEFAULT_JSON_PARSER.toJSONString(obj);}}

JSON 请求接口

/*Copyright (C) 2020 Tencent. All rights reserved.*/packageapijson;importjava.util.List;importjava.util.Map;/** * 请求JSON包装器 * @author Lemon */publicinterfaceJSONRequest<MextendsMap<String,Object>,LextendsList<Object>>extendsJSONMap<M,L>{publicstaticfinalStringKEY_TAG="tag";// 只在最外层publicstaticfinalStringKEY_VERSION="version";// 只在最外层publicstaticfinalStringKEY_FORMAT="format";// 只在最外层// 设置标签defaultJSONRequest<M,L>setTag(Stringtag){returnputs(KEY_TAG,tag);}// 设置版本defaultJSONRequest<M,L>setVersion(Integerversion){returnputs(KEY_VERSION,version);}// 设置格式defaultJSONRequest<M,L>setFormat(Booleanformat){returnputs(KEY_FORMAT,format);}}

SQL 配置类

/*Copyright (C) 2020 Tencent. All rights reserved.*/packageapijson.orm;importapijson.RequestMethod;importjava.util.List;importjava.util.Map;/** * SQL配置接口 * @author Lemon */publicinterfaceSQLConfig<T,MextendsMap<String,Object>,LextendsList<Object>>{// 支持的数据库类型StringDATABASE_MYSQL="MYSQL";StringDATABASE_POSTGRESQL="POSTGRESQL";StringDATABASE_SQLSERVER="SQLSERVER";StringDATABASE_ORACLE="ORACLE";StringDATABASE_DB2="DB2";// 获取表名StringgetTable();// 获取别名StringgetAlias();// 获取数据库类型StringgetDatabase();// 获取schemaStringgetSchema();// 获取请求方法RequestMethodgetMethod();// 设置请求方法SQLConfig<T,M,L>setMethod(RequestMethodmethod);}

解析器接口

/*Copyright (C) 2020 Tencent. All rights reserved.*/packageapijson.orm;importapijson.RequestMethod;importjava.util.List;importjava.util.Map;/** * 解析器接口 * @author Lemon */publicinterfaceParser<T,MextendsMap<String,Object>,LextendsList<Object>>{// 获取访问者Visitor<T>getVisitor();// 设置访问者Parser<T,M,L>setVisitor(Visitor<T>visitor);// 获取请求方法RequestMethodgetMethod();// 设置请求方法Parser<T,M,L>setMethod(RequestMethodmethod);// 解析请求MparseResponse(Mrequest);// 执行SQLMexecuteSQL(SQLConfig<T,M,L>config,booleanisSubquery)throwsException;}

远程函数解析器

/*Copyright (C) 2020 Tencent. All rights reserved.*/packageapijson.orm;importjava.util.List;importjava.util.Map;importapijson.JSONMap;/** * 远程函数解析器 * @author Lemon */publicinterfaceFunctionParser<T,MextendsMap<String,Object>,LextendsList<Object>>{// 调用函数Objectinvoke(Stringfunction,McurrentObject)throwsException;// 获取解析器Parser<T,M,L>getParser();// 设置解析器FunctionParser<T,M,L>setParser(Parser<T,M,L>parser);// 获取请求方法RequestMethodgetMethod();// 设置请求方法FunctionParser<T,M,L>setMethod(RequestMethodmethod);// 获取当前对象MgetCurrentObject();// 设置当前对象FunctionParser<T,M,L>setCurrentObject(McurrentObject);}

这些核心代码展示了 APIJSON 的核心架构,包括 JSON 解析、SQL 配置、请求处理和远程函数调用等功能模块。通过这些组件,APIJSON 能够实现无需编写代码即可提供完整 API 接口的功能。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/30 1:41:44

BIThesis LaTeX模板:2025新规适配的零基础配置方法

BIThesis LaTeX模板&#xff1a;2025新规适配的零基础配置方法 【免费下载链接】BIThesis &#x1f4d6; 北京理工大学非官方 LaTeX 模板集合&#xff0c;包含本科、研究生毕业设计模板及更多。&#x1f389; &#xff08;更多文档请访问 wiki 和 release 中的手册&#xff09;…

作者头像 李华
网站建设 2026/6/28 20:03:40

24、深入了解Linux设备驱动与网络设备

深入了解Linux设备驱动与网络设备 1. 网络设备概述 网络设备与普通设备不同,它不通过设备节点访问,也没有主设备号和次设备号。内核会根据字符串和实例编号为网络设备分配名称。例如,网络驱动注册接口的示例代码如下: my_netdev = alloc_netdev(0, "net%d", …

作者头像 李华
网站建设 2026/7/2 21:53:30

如何评估EmotiVoice生成语音的质量?主观+客观双标准

如何评估 EmotiVoice 生成语音的质量&#xff1f;主观 客观双标准 在智能语音内容需求爆发的今天&#xff0c;用户早已不再满足于“能说话”的机器朗读。无论是有声书、虚拟主播&#xff0c;还是游戏 NPC 和陪伴型 AI 助手&#xff0c;大家期待的是会表达、有性格、像真人的声…

作者头像 李华
网站建设 2026/7/4 2:09:16

用EmotiVoice为游戏角色注入灵魂级语音表现

用EmotiVoice为游戏角色注入灵魂级语音表现 在一款沉浸式角色扮演游戏中&#xff0c;当玩家踏入古老遗迹的深处&#xff0c;守卫者低沉而颤抖的声音从阴影中传来&#xff1a;“你竟敢闯入这片禁地&#xff01;”——如果这句台词只是机械朗读&#xff0c;再宏大的场景也会瞬间失…

作者头像 李华
网站建设 2026/7/3 20:55:14

3、网络渗透测试侦察阶段实用技巧与工具使用指南

网络渗透测试侦察阶段实用技巧与工具使用指南 在网络渗透测试中,侦察阶段是至关重要的一环。它能帮助我们尽可能多地收集目标的信息,从而为后续发现和利用漏洞提供更多机会。以下将详细介绍侦察阶段常用的工具和方法。 1. 使用Nmap扫描和识别服务 Nmap是全球最常用的端口扫…

作者头像 李华
网站建设 2026/7/1 23:24:45

4、网络渗透测试中的信息收集与工具使用

网络渗透测试中的信息收集与工具使用 在网络渗透测试中,信息收集是至关重要的一步,它能帮助测试人员了解目标系统的各种信息,为后续的攻击提供基础。以下将介绍一些常用的工具和方法,包括密码分析、字典生成、文件和文件夹查找以及网页爬取等。 1. 常见HTTP状态码 在网络…

作者头像 李华