Swagger Codegen
用 openapi-generator 生成客户端 SDK、服务端骨架和 mock 服务。
Key PointsCodegen 把规范翻译成代码:客户端省掉手写 HTTP 调用,服务端骨架保证路由与模型和规范一致。
装与看
Bash
# 用 Docker,免装 Java
docker run --rm -v "$PWD:/local" openapitools/openapi-generator-cli:latest \
list
# 或用 npm 包
npx @openapitools/openapi-generator-cli list生成客户端
Bash
# TypeScript fetch 客户端
docker run --rm -v "$PWD:/local" openapitools/openapi-generator-cli:latest \
generate -i /local/openapi.yaml -g typescript-fetch -o /local/sdk/ts
# Python
docker run --rm -v "$PWD:/local" openapitools/openapi-generator-cli:latest \
generate -i /local/openapi.yaml -g python -o /local/sdk/pyTypeScript
import { UsersApi, Configuration } from "./sdk/ts";
const api = new UsersApi(new Configuration({ basePath: "https://api.example.com/v1" }));
const user = await api.getUser({ id: 42 });
console.log(user.name);生成服务端骨架
Bash
docker run --rm -v "$PWD:/local" openapitools/openapi-generator-cli:latest \
generate -i /local/openapi.yaml -g spring -o /local/serverThe skeleton generates one method per operationId; you implement the body. Routing, parameter binding and models are guaranteed to match the spec.
生成 mock 服务
Bash
docker run --rm -p 4010:4010 -v "$PWD:/local" \
stoplight/prism:4 mock -h 0.0.0.0 /local/openapi.yamlMocking lets the front end integrate before the backend exists. It returns the
example values from the spec, so the quality of your examples decides the quality of the mock.放进 CI
YAML
- name: Regenerate SDK
run: |
npx @openapitools/openapi-generator-cli generate \
-i openapi.yaml -g typescript-fetch -o sdk/ts
git diff --exit-code sdk/ || (echo "SDK out of date, commit the regenerated code" && exit 1)装与看
Bash
# 用 Docker,免装 Java
docker run --rm -v "$PWD:/local" openapitools/openapi-generator-cli:latest \
list
# 或用 npm 包
npx @openapitools/openapi-generator-cli list生成客户端
Bash
# TypeScript fetch 客户端
docker run --rm -v "$PWD:/local" openapitools/openapi-generator-cli:latest \
generate -i /local/openapi.yaml -g typescript-fetch -o /local/sdk/ts
# Python
docker run --rm -v "$PWD:/local" openapitools/openapi-generator-cli:latest \
generate -i /local/openapi.yaml -g python -o /local/sdk/pyTypeScript
import { UsersApi, Configuration } from "./sdk/ts";
const api = new UsersApi(new Configuration({ basePath: "https://api.example.com/v1" }));
const user = await api.getUser({ id: 42 });
console.log(user.name);生成服务端骨架
Bash
docker run --rm -v "$PWD:/local" openapitools/openapi-generator-cli:latest \
generate -i /local/openapi.yaml -g spring -o /local/server骨架会按 operationId 生成接口方法,你只需要实现业务;路由、参数绑定、模型都由生成器保证与规范一致。
生成 mock 服务
Bash
docker run --rm -p 4010:4010 -v "$PWD:/local" \
stoplight/prism:4 mock -h 0.0.0.0 /local/openapi.yamlmock 的价值是让前端在后端动工前就能联调。它按规范里的
example 返回数据,所以示例写得好不好直接决定 mock 好不好用。放进 CI
YAML
- name: Regenerate SDK
run: |
npx @openapitools/openapi-generator-cli generate \
-i openapi.yaml -g typescript-fetch -o sdk/ts
git diff --exit-code sdk/ || (echo "SDK out of date, commit the regenerated code" && exit 1)