9.13 API 模块编写规范
概述
api 模块按域组织(src/api/{域}/{模块}.ts),每接口一个导出函数,内部 http.request 调用。url 对齐后端 gmeta path(无 /api 前缀、无 /v1)。本节给出规范与真实示例。
文件组织
text
src/api/{域}/{模块}.ts 域与后端模块域一致(system/data/content/monitor/tool)
src/api/common/*.ts 跨域公共接口(city/index/menu/user)
命名:驼峰(fileTemplate.ts、onlineUser.ts、cacheMonitor.ts)
函数命名:get{Mod}Page / get{Mod}Detail / {mod}Add / {mod}Update /
{mod}Delete / {mod}BatchDelete / {mod}Import / {mod}Export真实示例(摘自 src/api/tool/example.ts)
ts
import { http } from '@/utils/http/axios';
/**
* 案例演示模块接口
*
* 提供案例演示的增删改查及导入导出接口调用。
*/
/**
* 获取案例演示分页列表
*
* @param params 查询参数,包含 pageNo、pageSize 及业务筛选条件
* @returns 分页结果,含 records、total、size、current、pages
*/
export function getExamplePage(params?: Record<string, any>) {
return http.request({
url: '/example/page',
method: 'GET',
params,
});
}
/**
* 根据 ID 获取案例演示详情
*
* @param id 案例演示ID
* @returns 案例演示详情数据
*/
export function getExampleDetail(id) {
return http.request({
url: '/example/detail/' + id,
method: 'get',
});
}
/**
* 添加案例演示
*
* @param data 案例演示数据
* @returns 新记录的 ID
*/
export function exampleAdd(data: any) {
return http.request({
url: '/example/add',
method: 'POST',
data,
});
}url 对齐规则
text
前端 api url 后端 gmeta path 说明
'/example/page' ↔ /api/example/page baseURL 已含 /api
'/example/detail/' + id ↔ /api/example/detail/:id 路由参数拼接
'/config/item/page' ↔ /api/config/item/page 子资源前缀对齐
禁止:写 '/api/example/page'(重复);写 '/v1/...'(无版本段)请求方法与参数位置
| 方法 | 参数位置 | 说明 |
|---|---|---|
| GET | params | 查询参数(分页/筛选/路由参数) |
| POST/PUT | data | JSON body(AddReq/UpdateReq 结构) |
| DELETE | url 路径参数 或 data | /delete/:id 走路径;/batchDelete 走 data {ids:[]} |
导入导出函数
ts
// 导入:multipart(组件内组装 FormData,api 层可直接透传)
export function exampleImport(data: any) {
return http.request({
url: '/example/import',
method: 'POST',
data, // FormData(Content-Type 自动 multipart)
});
}
// 导出:GET + 筛选参数(导出=所见)
export function getExampleExport(params?: Record<string, any>) {
return http.request({
url: '/example/export',
method: 'GET',
params,
});
}编写规约
text
1. 一接口一函数,JSDoc 注释(参数/返回/用途)——生成器模板同款风格
2. url 从后端 gmeta path 抄写(去掉 /api 前缀),改动后端 path 同步前端
3. method 与 gmeta method 一致(大小写不敏感但团队统一大写 GET/POST/PUT/DELETE)
4. 不在 api 层做数据加工(transform 解包已完成;加工放页面/组合式函数)
5. 复杂请求(上传/下载/超时定制)用 RequestOptions 第三参数定制
6. 新增函数后对照 /api.json 核对路径与方法