Skip to content

API 协议约定

Forge 后端所有接口遵循统一的响应格式和分页协议。你在设计新接口时必须遵守这些约定。

统一响应格式

所有接口返回 RespInfo 对象:

json
{
  "code": 200,
  "msg": "操作成功",
  "data": {}
}
字段类型说明
codeInteger状态码,200 成功,其他失败
msgString提示消息
dataObject业务数据

后端使用方式:

java
// 成功返回
return RespInfo.success(data);

// 失败返回
return RespInfo.error("用户名已存在");

RESTful 路径

操作方法路径示例
分页查询GET/module/pageGET /system/user/page
详情查询GET/module/:idGET /system/user/1
新增POST/modulePOST /system/user
修改PUT/modulePUT /system/user
删除DELETE/module/:idDELETE /system/user/1

分页协议

请求参数

前端传递分页参数:

参数类型默认值说明
pageNumInteger1当前页码
pageSizeInteger10每页条数

后端 Controller 接收:

java
@GetMapping("/page")
public RespInfo page(
    @RequestParam(defaultValue = "1") Integer pageNum,
    @RequestParam(defaultValue = "10") Integer pageSize,
    SysUserDTO query
) {
    return RespInfo.success(userService.page(query, pageNum, pageSize));
}

响应格式

json
{
  "code": 200,
  "data": {
    "total": 100,
    "list": []
  }
}

API 加密

敏感接口使用 @ApiEncrypt / @ApiDecrypt 注解:

java
@PostMapping("/save")
@ApiDecrypt
@ApiEncrypt
public RespInfo save(@RequestBody UserDTO dto) {
    return RespInfo.success(userService.save(dto));
}

前端对应使用 postEncrypt 发送加密请求:

javascript
import { postEncrypt } from '@/utils/encrypt-request'

postEncrypt('/api/user/save', { name: '张三', phone: '13800138000' })

权限控制

使用 Sa-Token 注解控制接口权限:

java
@GetMapping("/list")
@SaCheckPermission("system:user:list")
public RespInfo list() {
    return RespInfo.success(userService.list());
}

前端 AiCrudPage 路径格式

AiCrudPage 的 api-config 中路径使用 METHOD@/path 格式,占位符用冒号 :id

javascript
const apiConfig = {
  page: 'GET@/system/user/page',
  get: 'GET@/system/user/:id',
  add: 'POST@/system/user',
  edit: 'PUT@/system/user',
  delete: 'DELETE@/system/user/:id'
}

Forge Admin — 基于 Vue3 + Spring Boot 的企业级后台管理框架