《AI前端效率提升实践》往期精彩推荐
上期我们分享了从截图到企业级前端页面的实践,完成页面的视觉和交互实现之后,无非就是对接后端接口,实现功能逻辑了。这一部分内容虽然不用Skill,直接使用通用模型能力也能实现,但是会存在一些问题:
- 每次生成的效果不稳定
- 提示词需要重复写
- 团队协作多人生成的代码风格不统一等
因此我们也封装了一个Skill,根据后端提供的接口设计,一键搞定类型定义 、接口调用 、Mock与调试 、网关配置等功能逻辑实现,并保障团队生成代码风格统一。基于 Skill 生成的完备 TS 类型定义和 Mock 数据,还有一个更强大的隐藏价值------为后续的功能实现提供精确的功能约束,仅需少量的功能描述,Agent便能正确使用接口和对应字段完成功能逻辑的生成。
这个skill做了什么
Skill 为 Vue 前端项目提供完整的 API 集成解决方案,通过解析后端接口定义文档,自动生成类型安全的调用代码和配套开发资源。
| 能力 | 说明 | 输出产物 |
|---|---|---|
| 类型定义生成 | 根据接口 Schema 生成 TS 类型 | types/*.types.ts |
| API 函数生成 | 封装类型安全的 HTTP 调用方法 | service/*.ts |
| Mock 数据生成 | 生成接口模拟数据,支持独立开发 | mock/*.mock.ts |
| 接口映射配置 | 生成网关路由配置文件 | integration.json |
核心优势:生成的代码风格统一、类型完备,无需人工修改即可直接使用。
适用场景
以下场景建议使用本 Skill:
- 根据接口文档(Swagger/OpenAPI)生成前端代码
- 生成 TypeScript 类型定义和 API 调用函数
- 生成 Mock 数据用于前端独立开发
- 配置接口网关映射关系
- 处理或转换 OpenAPI/Swagger 接口定义
- 新增或修改接口定义时
4.4 如何使用
安装 Skill 后,使用以下提示词触发:
json
/api-use-vue 根据xxx接口定义生成调用代码
Skill 会自动识别接口定义格式并生成完整的代码产物。
4.5 设计思路
Skill 的工作流程分为五个核心步骤:
- 识别接口定义 - 支持 Swagger/OpenAPI YAML、JSON Schema 等格式
- 生成类型定义 - 读取
references/type-generation.md规范 - 生成 API 调用函数 - 读取
references/api-function.md规范 - 生成 Mock 数据 - 读取
references/mock-generation.md规范(如需配置 mock 机制,读取mock-config.md) - 生成接口映射配置 - 读取
references/integration-config.md规范(询问用户是否需要)
skill.md核心提示词模板:
txt
---
name: api-use-vue
description: 基于接口描述文档, 自动生成Vue项目的TypeScript类型定义、API调用函数、Mock数据配置和接口映射配置。新增/修改接口调用、类型定义、mock数据、接口映射配置时调用
---
## api-use-vue
本技能为Vue前端项目提供完整的API集成解决方案,通过解析后端接口定义文档,自动生成类型安全的调用代码和配套的开发资源,显著提升前后端联调效率。
### 核心能力
| 能力 | 说明 | 输出产物 |
|------|------|----------|
| 类型定义生成 | 根据接口Schema生成TypeScript类型 | `types/*.types.ts` |
| API函数生成 | 封装类型安全的HTTP调用方法 | `service/*.ts` |
| Mock数据生成 | 生成接口模拟数据,支持独立开发 | `mock/*.mock.ts` |
| 接口映射配置 | 生成网关路由配置文件 | `integration.json` |
## 触发条件
当用户提出以下需求时,应主动使用此技能:
- 根据接口文档(Swagger/OpenAPI)生成前端代码
- 生成TypeScript类型定义和API调用函数
- 生成Mock数据用于前端独立开发
- 配置接口网关映射关系
- 处理或转换OpenAPI/Swagger接口定义
- 新增/修改接口定义时
## 使用流程
### 第一步: 识别并分析接口定义
...省略
### 第二步: 生成类型定义
根据接口定义生成TypeScript类型文件:
**详细规范**: 参考 [类型生成规范](references/type-generation.md)
**输出文件**: `types/{module}.types.ts`
...省略
### 第三步: 生成API调用函数
生成类型Api调用函数:
**详细规范**: 参考 [API函数规范](references/api-function.md)
...省略
### 第五步: 生成Mock数据
如果项目还没配置mock模块,先读取[Mock服务配置](references/mock-config.md)完成mock服务的配置。
读取Mock数据规范文件,生成接口模拟数据,参考 [Mock数据规范](references/mock-generation.md)
### 第六步: 生成接口映射配置
主动询问用户是否需要生成接口映射配置:
**选项**:
- ✅ 是 - 生成integration.json配置
- ❌ 否 - 跳过此步骤
**详细规范**: 参考 [接口映射规范](references/integration-config.md)
## 最佳实践
### 1. 接口定义优先
- 确保接口文档描述完整准确
### 2. 类型安全
- 所有接口都应生成对应的TypeScript类型
- 当接口定义过于复杂时,允许使用any
### 3. Mock数据管理
- Mock数据应接近真实数据结构
- 覆盖正常、异常、边界情况
- 定期同步接口变更
### 4. 代码组织
- 按业务模块组织API文件
- 公共类型放在`types/common.types.ts`
- 注意按模块拆分文件管理,不要全部耦合一堆
- 保持文件命名一致性
- 支持增量生成,避免覆盖手动代码
## 注意事项
1. **路径映射一致性**: `targetUri`与`uri`的映射规则需与后端网关配置保持一致
2. **HTTP库兼容性**: 生成的代码基于项目现有的HTTP请求库,需确认函数签名匹配
3. **文件覆盖**: 增量生成时注意避免覆盖手动编写的业务逻辑
4. **优先按照当前项目规范生成代码**
5. 步骤中提到的参考文档,你必须读取文件内容
6. 核心路径是生成接口映射配置、接口调用函数、类型定义、mock数据,skill的每个功能都可单独使用
## 参考文档
详细的生成规范和配置说明请参考:
- [类型生成规范](references/type-generation.md) - TypeScript类型定义规范
- [API函数规范](references/api-function.md) - HTTP调用函数规范
- [Mock数据规范](references/mock-generation.md) - Mock数据生成规范
- [Mock服务配置](references/mock-config.md)
- [接口映射规范](references/integration-config.md) - 网关配置规范
4.6 实践案例:生成接口并实现功能需求
后端新增"ip白名单列表"接口,定义如下:
json
Get /snap-manager/v1/ip-trustlist
query传参:
{
search: string
limit: 10
offset: 0
}
响应:
{
total: number,
list: [{
id: string,
ip: string,
type: string,
description: string,
}]
}
运行 Skill,5 秒后自动生成:
1. TypeScript 类型定义
typescript
// types/ip-whitelist.types.ts
/**
* IP白名单查询请求参数
*/
export interface GetIpWhitelistReq {
search?: string; // 搜索关键词(可选)
limit: number; // 每页数量
offset: number; // 偏移量
}
/**
* IP白名单项
*/
export interface IpWhitelistItem {
id: string; // 白名单ID
ip: string; // IP地址
type: string; // 类型(公网/内网)
description: string; // 描述
}
/**
* IP白名单列表响应
*/
export interface GetIpWhitelistResp {
total: number; // 总数量
list: IpWhitelistItem[]; // 白名单列表
}
2. API 调用函数
typescript
// service/ip-whitelist.ts
import { Observable } from 'rxjs';
import { apiService } from '@/service/common/api';
import type { GetIpWhitelistReq, GetIpWhitelistResp } from '@/types/ip-whitelist.type';
/**
* 获取IP白名单列表
* @param params 查询参数
* @returns IP白名单列表响应
*/
export const getIpWhitelist = (
params: GetIpWhitelistReq
): Observable<GetIpWhitelistResp> => {
return apiService.get({ url: '/snap-manager/v1/ip-trustlist', params });
};
3. Mock 数据
typescript
// mock/ip-whitelist.mock.ts
const mockConfigs: MockMethodWithDisable = [
{
url: `${API_PREFIX}/snap-manager/v1/ip-trustlist`,
method: 'get',
disable: false,
response: (req: any) => {
const { search = '', limit = 10, offset = 0 } = req.query;
// 生成模拟数据
const allData = Mock.mock({
'list|50': [{
'id': '@guid',
'ip': '@ip',
'type|1': ['公网', '内网'],
'description': '@csentence(5, 20)'
}]
}).list;
// 搜索过滤
let filteredData = allData;
if (search) {
filteredData = allData.filter(item =>
item.ip.includes(search) ||
item.type.includes(search) ||
item.description.includes(search)
);
}
// 分页
const start = parseInt(offset);
const end = start + parseInt(limit);
const paginatedData = filteredData.slice(start, end);
return {
total: filteredData.length,
list: paginatedData
};
}
}
];
4. 网关配置(可选)
json
{
"mode": "FULL",
"targetService": "snapManger",
"method": "GET",
"endpointId": "endpointId",
"targetUri": "/snap-manager/v1/ip-trustlist",
"readTimout": 30,
"targetProtocol": "https",
"uri": "/snap-manager/v1/ip-trustlist",
"seqId": "",
"tiDisabled": false
}
效率对比:手动编写需要 15-20 分钟,且容易在字段拼写上出错;使用 Skill 只需 10 秒,准确无误,并且风格一致。该Skill和图像识别SKill和DevUI Skill组合使用,可快速端到端企业级前端页面开发。
总结
真正的好工具不是功能有多强,而是能否消弭掉那些重复、无脑但必须完成的工作。这个 Skill 就是为此而生。
接口定义即代码,不只是一种口号,更是前端开发应该追求的工作流。
如果你也在为接口联调、类型安全、Mock 数据烦恼,不妨试试这个 Skill。欢迎一起使用、反馈、共同完善它。
📣 加入我们
MateChat 正在快速发展,我们欢迎更多开发者加入:
- 💬 DevUI微信小助手:devui-official(添加时请备注MateChat)
- 🌟 代码仓库地址:gitcode.com/DevCloudFE/...

如果这篇文章对你有帮助,欢迎点赞、收藏,有疑问直接在评论区聊~
感谢贡献者 @liuguolin 提供的优质好文!