后端开挂:3 行代码写出 8 个接口!
- [APIJSON 是什么?](#APIJSON 是什么?)
- [如何实现 3 行代码搞定 8 个接口?](#如何实现 3 行代码搞定 8 个接口?)
- 举几个例子
今天在我的技术群里面看到了有同学在讨论,如何用 3 行代码搞定 8 个接口!
作为一个老程序员,刚听到这个说法的时候,我的第一反应也是 怎么可能?
。我们都知道,传统后端开发中,为了实现一个完整的增删改查接口,往往要写很多重复代码:定义路径、配置参数、处理逻辑、验证权限,甚至返回的 JSON 格式都要细细斟酌。如果要做一个复杂点的业务接口,几十行代码只是起步,百来行也是家常便饭。
可最近,我接触到一个"神器"------APIJSON,它几乎颠覆了我对后端接口开发的认知。
听我这么一说,你可能会好奇:用 3 行代码就能搞定 8 个接口?这到底是怎么做到的?今天就和大家好好聊聊 APIJSON 这个项目,看它如何实现这种 开挂
级别的操作。
APIJSON 是什么?
APIJSON 是腾讯开源的 自动化接口生成框架
,它的核心理念就是:用配置来代替代码。
在传统开发模式中,我们通常需要为每个接口写单独的控制器(Controller),绑定路径、处理逻辑、返回数据格式。但 APIJSON 则把这些都简化为一个简单的 JSON 请求体。
你只需要发一个 JSON 格式的请求,框架就会自动解析请求内容,并生成相应的 SQL 语句,完成数据库操作,再把结果返回给前端。整个过程几乎不需要写任何代码!
比如,当你想获取某个用户的信息时,传统做法是写个方法,大致像这样:
java
@RestController
@RequestMapping("/api")
public class UserController {
@GetMapping("/user/{id}")
public User getUser(@PathVariable Long id) {
return userRepository.findById(id).orElseThrow(() -> new RuntimeException("User not found"));
}
}
看起来不多,但你得声明路径、写参数校验、做异常处理,如果再加上权限验证,这一套流程下来,分分钟就是几十行。而 APIJSON 只需要发一个 JSON 请求:
java
{
"User": {
"id": 123
}
}
请求发出后,APIJSON 会自动生成 SQL,动态执行,并返回格式化后的 JSON 数据结果。至此,一个完整的查询操作就这么简单地完成了!
想象一下,对于一般的增删改查接口,如果每次都用这种方式,是不是就可以省掉大量代码?这就是 APIJSON 的核心------用最简单的 JSON 请求,动态处理所有常见的数据库操作。
如何实现 3 行代码搞定 8 个接口?
这时你可能会问:为什么只用 3 行代码就能搞定?其实,这里的3 行代码
指的是最少的权限配置代码。
因为 APIJSON 的操作逻辑是根据请求体中的 JSON 结构动态生成的,所以传统开发中那些冗长的 Controller、Service、Repository
层代码,基本都被省略了。
为了安全性和功能的可控性,APIJSON 引入了权限控制机制。比如,你可以用 @MethodAccess
这个注解来定义一个类的权限:
java
@MethodAccess(
GET = {LOGIN, ADMIN}, // 只有登录用户和管理员可以查
POST = {ADMIN}, // 只有管理员可以新增
PUT = {ADMIN}, // 只有管理员可以修改
DELETE = {ADMIN} // 只有管理员可以删除
)
public class User {}
这个注解用几行代码就能配置好接口的权限校验逻辑。然后,只要把这个 User 类注册到 APIJSON 中,整个增删改查的接口就自动生成了!以后每次请求时,只要根据请求方式(GET、POST、PUT、DELETE)和权限配置,就能自动判断并完成对应操作。
APIJSON 的背后,是一套动态解析引擎。它的核心原理是:解析请求体,生成对应的 SQL 语句,然后动态执行。整个过程大致分为以下几步:
- 请求解析: 当你发一个 JSON 请求时,APIJSON 会先解析 JSON 结构,识别每个键值对的含义,比如 "User" 是表名,"id" 是字段名。
- 权限校验: 解析完成后,它会根据配置好的权限控制规则,检查当前请求是否有权操作相应的数据表和字段。
- SQL 生成: 根据解析结果,APIJSON 会自动拼接成对应的 SQL 语句,比如
SELECT * FROM User WHERE id = 123;
,然后执行。 - 结果返回: 最后,APIJSON 会把查询结果转化成你需要的 JSON 格式返回给前端。
举几个例子
我们用几个实际例子来看 APIJSON 如何用简单的 JSON 配置完成复杂的接口逻辑。
查询单个用户信息
只需发一个简单的 GET 请求,指定用户的 id:
java
{
"User": {
"id": 123
}
}
APIJSON 会自动生成 SQL:
sql
SELECT * FROM User WHERE id = 123;
然后返回这个用户的信息,整个过程自动完成。
批量查询女性用户
如果要查所有女性用户,只需要改下请求体:
java
{
"User[]": {
"User": {
"sex": 1,
"@column": "id,name"
}
}
}
生成的 SQL 会变成:
sql
SELECT id, name FROM User WHERE sex = 1;
多表关联查询
假设你想查某个用户的所有评论及其相关信息,只需要这样定义:
java
{
"[]": {
"Comment": {},
"User": {
"id@": "/Comment/userId" // User.id = Comment.userId
}
}
}
这段 JSON 结构能够自动生成复杂的 SQL 联表查询,并且返回所有匹配的结果。
APIJSON 的底层逻辑就是解析 + 映射 + 生成 SQL + 返回结果
。通过一套简单的 JSON 配置,它能够大幅度减少开发中那些冗余、重复的代码。
在数据驱动的项目中(比如 CMS、资讯类网站、个人博客),它几乎能完全取代传统的接口开发方式。这样一来,后端接口开发变成了简单的 配置游戏
,让开发者能够专注于业务逻辑而不是重复的增删改查。
虽然 APIJSON 不是万能的,它在一些复杂业务场景下可能还不够灵活,但对于大多数数据驱动型项目,它绝对是提升效率的利器!
github地址: github.com/Tencent/APIJSON