Swagger Codegen

用 openapi-generator 生成客户端 SDK、服务端骨架和 mock 服务。

Advanced
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/py
TypeScript
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

The 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.yaml
Mocking 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)

Friends & Partners