news 2026/5/2 23:48:56

零代码打造全功能后端 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/4/30 14:17:47

31、多线程编程全解析

多线程编程全解析 1. 多线程编程基础 多线程编程在现代软件开发中扮演着至关重要的角色。线程编程的接口是 POSIX 线程 API(通常称为 pthreads),它最初在 1995 年的 IEEE POSIX 1003.1c 标准中定义,作为 C 库 libpthread.so 的一部分实现。过去 15 年左右,pthreads 有…

作者头像 李华
网站建设 2026/5/1 0:28:58

Archipack建筑建模插件深度解析:从入门到精通的完整指南

Archipack建筑建模插件深度解析&#xff1a;从入门到精通的完整指南 【免费下载链接】archipack Archipack for blender 2.79 项目地址: https://gitcode.com/gh_mirrors/ar/archipack 在当今建筑设计与3D建模领域&#xff0c;Archipack作为Blender的专业插件&#xff0…

作者头像 李华
网站建设 2026/5/1 0:39:49

EmotiVoice在博物馆导览系统中的智能化升级应用

EmotiVoice在博物馆导览系统中的智能化升级应用 在一座安静的博物馆展厅里&#xff0c;一位游客驻足于一件距今三千年的青铜器前。耳边响起的声音不再是千篇一律、机械单调的讲解&#xff0c;而是一位沉稳如考古学家般的男声&#xff0c;语气中带着敬畏与发现的喜悦&#xff1a…

作者头像 李华
网站建设 2026/5/1 0:29:01

EmotiVoice语音合成在医疗陪护机器人中的应用前景

EmotiVoice语音合成在医疗陪护机器人中的应用前景 在一间安静的养老院房间里&#xff0c;一位年近八旬的老人正坐在轮椅上。他的子女常年在国外工作&#xff0c;平日里陪伴他的只有一台外形温和、带屏幕的护理机器人。当系统检测到他连续两小时未起身活动时&#xff0c;机器人缓…

作者头像 李华
网站建设 2026/5/2 9:46:37

屏幕录制新选择:vokoscreenNG如何解决你的录制难题

屏幕录制新选择&#xff1a;vokoscreenNG如何解决你的录制难题 【免费下载链接】vokoscreenNG vokoscreenNG is a powerful screencast creator in many languages to record the screen, an area or a window (Linux only). Recording of audio from multiple sources is supp…

作者头像 李华
网站建设 2026/5/1 0:29:05

一键部署EmotiVoice Docker镜像的操作步骤

一键部署 EmotiVoice Docker 镜像的操作步骤 在语音交互日益成为主流人机接口的今天&#xff0c;用户对“机器说话”的期待早已不再满足于简单的信息播报。他们希望听到更自然、更有情绪、甚至带有“人格感”的声音——无论是陪伴型AI助手的一句温柔问候&#xff0c;还是游戏角…

作者头像 李华