简介:本文详细介绍如何通过umi框架与Apifox工具链实现OpenAPI规范生成、代码生成及接口Mock的完整流程,覆盖从API设计到前后端联调的全生命周期管理。
在微服务架构和前后端分离开发模式下,API文档的规范性与实时性直接影响协作效率。传统开发模式中,开发者需要手动维护Swagger文档、编写Mock数据、生成客户端SDK,三套工作存在严重的信息同步问题。
OpenAPI Specification(原Swagger规范)作为行业标准,通过YAML/JSON格式定义API契约,包含:
采用OpenAPI规范可实现:
umi作为企业级前端应用框架,内置对OpenAPI规范的支持:
Apifox作为新一代API协作平台,提供:
mkdir umi-openapi-demo && cd umi-openapi-demonpm create umi@latest# 选择app类型,安装必要依赖npm install @umijs/plugin-openapi --save-dev
在umi项目中配置openapi插件:
// .umirc.tsexport default {plugins: ['@umijs/plugin-openapi'],openapi: [{// 从路由自动生成requestLibPath: "import { request } from 'umi'",// 或指定自定义控制器filePath: "src/api/generated.ts",// 输出目录outputDir: "src/api/openapi",}]}
通过装饰器标记Controller方法:
// src/api/user.tsimport { OpenAPI } from '@umijs/plugin-openapi';@OpenAPI({summary: '用户管理接口',tags: ['user']})export default class UserController {@OpenAPI({method: 'get',path: '/api/user/{id}',summary: '获取用户详情',parameters: [{ name: 'id', in: 'path', required: true }],responses: {200: {description: '成功',content: { 'application/json': { schema: { $ref: '#/components/schemas/User' } } }}}})async getUser(id: string) {// 业务逻辑}}
openapi-generator生成客户端代码:
npm install @openapitools/openapi-generator-cli -gopenapi-generator-cli generate \-i api-spec.json \-g typescript-axios \-o src/api/generated
在Apifox中定义接口时启用Mock:
获取Mock地址格式:
http://{{server}}/api/user?apifox-mock-id=xxx
修改umi配置:
// .umirc.tsexport default {proxy: {'/api': {target: 'http://127.0.0.1:4523', // Apifox Mock地址changeOrigin: true,pathRewrite: { '^/api': '' }}}}
在Apifox中创建Mock场景:
// Mock脚本示例function mockUser(params) {const id = params.id || '@id';return {id,name: '@cname',age: '@integer(18,60)',avatar: '@image("200x200")'};}
umi generate生成类型定义利用生成的TypeScript接口:
import { User } from '@/api/openapi';const fetchUser = async (id: string): Promise<User> => {return request(`/api/user/${id}`);};
在Apifox中创建测试用例:
修改openapi-generator模板:
<!-- 修改velocity模板 -->#set($importMap = {})...export const ${className} = {${operations.join(',\n ')}};
在Apifox中创建:
使用Apifox的变更对比功能:
通过umi与Apifox的深度集成,开发者可以:
未来发展方向:
建议开发者建立标准化的API开发流程,将OpenAPI规范作为团队技术资产进行管理,持续提升研发效能。