2024年9月18日星期三

swagger openapi

 Swagger 和 OpenAPI 是用于描述、设计和开发 RESTful APIs 的强大工具。它们帮助开发人员通过标准化的接口描述文档,提高 API 的可读性、测试性和自动化。Swagger 是一套 API 工具的名称,而 OpenAPI 是定义 API 规范的标准。

1. 什么是 OpenAPI?

OpenAPI Specification (OAS) 是一种用于描述 REST API 的标准化格式。它通过一个 .yaml.json 文件来详细描述 API 的路径、参数、响应、错误代码、身份验证等信息。

  • 版本:当前的 OpenAPI 规范是 3.x。
  • 主要功能
    • API 路径描述:定义 API 的端点(如 /users, /products 等)及其支持的 HTTP 方法(GET, POST, PUT, DELETE 等)。
    • 输入和输出:描述 API 请求和响应中的参数、请求体、响应体、状态码。
    • 身份验证:支持各种身份验证机制,如 OAuth 2.0、API Key。
    • 扩展:通过自定义扩展支持更复杂的场景。

2. 什么是 Swagger?

Swagger 是一整套工具,用于基于 OpenAPI 规范生成、测试、记录和使用 API。主要工具包括:

  • Swagger Editor:基于浏览器的工具,用于编写和查看 OpenAPI 文档。
  • Swagger UI:将 OpenAPI 文档转换为交互式、可测试的 HTML 页面。
  • Swagger Codegen:根据 OpenAPI 文档自动生成客户端 SDK 和服务器端代码。
  • Swagger Inspector:用于在线测试 API,并生成 OpenAPI 规范。

3. OpenAPI/Swagger 的主要功能

1. API 文档生成

通过 OpenAPI 规范,可以生成详细的 API 文档,包括每个 API 端点的功能、请求和响应参数等。文档可以在 Swagger UI 中展示为交互式网页,方便开发者和用户测试 API。

2. 自动生成代码

Swagger Codegen 可以根据 OpenAPI 描述文件自动生成 API 的服务器代码和客户端 SDK。例如,你可以生成不同语言的 API 客户端(如 Python, JavaScript, Go),从而避免手动编写这些代码。

3. API 设计

Swagger Editor 是一个基于浏览器的工具,可以帮助开发人员通过交互式界面设计 API。你可以在其中编写 OpenAPI 规范,并实时预览 API 文档的外观。

4. API 测试

Swagger UI 允许用户直接在浏览器中调用 API 进行测试,而不需要额外的工具。用户可以通过提供请求参数、访问令牌等来测试 API 的各种功能。

5. API Mocking

在实际实现 API 之前,可以通过 Swagger 生成 Mock 服务来模拟 API 的行为。这对于前后端开发并行进行非常有用。

4. OpenAPI 规范示例

以下是一个简单的 OpenAPI 3.0 规范的示例,它描述了一个简单的用户 API:

yaml
openapi: 3.0.0
info: title: Simple User API description: API for managing users version: 1.0.0 servers: - url: https://api.example.com/v1 paths: /users: get: summary: Get a list of users responses: '200': description: A list of users content: application/json: schema: type: array items: $ref: '#/components/schemas/User' post: summary: Create a new user requestBody: content: application/json: schema: $ref: '#/components/schemas/User' responses: '201': description: The created user content: application/json: schema: $ref: '#/components/schemas/User' /users/{userId}: get: summary: Get user by ID parameters: - name: userId in: path required: true schema: type: string responses: '200': description: User found content: application/json: schema: $ref: '#/components/schemas/User' '404': description: User not found components: schemas: User: type: object properties: id: type: string name: type: string email: type: string

5. 如何使用 Swagger/OpenAPI

1. 创建 OpenAPI 规范

你可以手动编写 OpenAPI 文件,或者使用 Swagger Editor 来编写和验证规范。可以使用 .yaml.json 格式。

bash
# 运行本地 Swagger Editor docker pull swaggerapi/swagger-editor docker run -d -p 8080:8080 swaggerapi/swagger-editor

2. 生成代码

一旦有了 OpenAPI 规范,你可以使用 Swagger Codegen 来生成服务器端代码或客户端 SDK:

bash
# 使用 Swagger Codegen 生成客户端代码 swagger-codegen generate -i swagger.yaml -l python -o ./python-client

3. 测试 API

将 OpenAPI 文件托管到 Swagger UI 中,可以通过 Web 浏览器测试 API:

bash
# 运行本地 Swagger UI docker pull swaggerapi/swagger-ui docker run -d -p 8081:8080 -e SWAGGER_JSON=/foo/swagger.yaml -v $(pwd):/foo swaggerapi/swagger-ui

4. 自动生成 API 文档

集成 Swagger UI 到你的项目中,让它自动根据 API 的实现和 OpenAPI 文件生成交互式文档。

6. 常见的 Swagger/OpenAPI 工具

  • Swagger Editor:用于编写和编辑 OpenAPI 规范。
  • Swagger UI:将 OpenAPI 文档渲染为可交互的文档页面,支持在线测试 API。
  • Swagger Codegen:自动生成服务器代码和客户端 SDK。
  • Swagger Inspector:在线测试和验证 API,并生成 OpenAPI 规范。

7. 优势

  • 标准化:OpenAPI 规范提供了统一的标准,确保 API 描述的一致性和可读性。
  • 自动化:通过自动生成客户端和服务端代码,可以减少重复劳动。
  • 文档:为 API 提供交互式文档,便于开发者和用户理解和测试。
  • 易于集成:可以集成到 CI/CD 管道中,确保 API 的文档和实现保持同步。

总结

Swagger 和 OpenAPI 是强大的工具,可以帮助开发人员通过标准化的 API 描述文件进行设计、文档生成、代码生成和测试。通过使用这些工具,开发团队可以显著提高开发效率和 API 的可维护性。

没有评论: