news 2026/6/10 15:00:28

零代码打造全功能后端 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/10 5:48:50

23、使用Mender进行OTA更新及设备驱动接口详解

使用Mender进行OTA更新及设备驱动接口详解 1. 使用Mender进行OTA更新 在实际应用中,对设备进行软件更新是非常重要的,尤其是当设备连接到互联网时,OTA(Over The Air)更新就成为了必备功能。下面将详细介绍如何使用Mender进行OTA更新。 1.1 安装准备 安装Docker Engine …

作者头像 李华
网站建设 2026/6/9 14:49:12

26、Linux设备驱动与初始化程序详解

Linux设备驱动与初始化程序详解 1. 硬件配置发现 设备驱动通常用于与硬件进行交互,然而虚拟驱动仅操作内存结构,缺乏与真实硬件的交互。在实际情况中,首先需要发现硬件,因为硬件在不同配置下可能处于不同的地址。 部分硬件能够自行提供信息,例如PCI或USB等可探测总线上…

作者头像 李华
网站建设 2026/6/10 14:40:13

Archipack建筑建模插件完整指南:从入门到精通

Archipack建筑建模插件完整指南&#xff1a;从入门到精通 【免费下载链接】archipack Archipack for blender 2.79 项目地址: https://gitcode.com/gh_mirrors/ar/archipack Archipack是一款专为Blender设计的强大建筑建模插件&#xff0c;能够显著提升建筑设计的效率和…

作者头像 李华
网站建设 2026/6/10 14:19:48

手把手教你搭建Windows系统日志监控服务器

手把手教你搭建Windows系统日志监控服务器 【免费下载链接】visualsyslog Syslog Server for Windows with a graphical user interface 项目地址: https://gitcode.com/gh_mirrors/vi/visualsyslog 还在为Windows系统日志分散管理而苦恼吗&#xff1f;Visual Syslog Se…

作者头像 李华
网站建设 2026/6/10 14:44:20

AI项目成立团队了

昨晚一个粉丝问我&#xff1a; 独孤&#xff0c;我艺术院校毕业&#xff0c;会绘图&#xff0c;可我发了几百个作品&#xff0c;点赞不少&#xff0c;就是不赚钱。 是不是我不适合做生意&#xff1f; 我看完只想笑。 你不是不适合&#xff0c;你是还在用穷人思维做富人生意…

作者头像 李华
网站建设 2026/6/10 7:19:31

C#.NET ref struct 深度解析:语义、限制与最佳实践

简介 ref struct 是 C# 7.2 引入的一种特殊结构体类型&#xff0c; 它与普通 struct 的最大区别是 严格限制其分配位置&#xff1a; ref struct 只能分配在栈&#xff08;stack&#xff09;上&#xff0c;不能分配在堆&#xff08;heap&#xff09;上。 ⚡ 设计初衷提高性能&am…

作者头像 李华