Swagger Editor 的介绍和使用_openapi (swagger) editor

Swagger Editor 可以帮助开发人员优雅地设计符合 OpenAPI 规范的API接口,是一个可以通过浏览器进行使用的工具。功能如下:

  • 编辑:可以在浏览器上基于YAML等语法定义我们的RESTful API,也可以采用 JSON语法

  • 查看:Swagger Editor会自动生成一篇排版优美的API文档,并且提供实时预览

  • 生成代码:可智能生成服务端或客户端代码,支持 python、golang、java 等主流语言

 

安装

参见: swagger-editor/README.md at master · swagger-api/swagger-editor · GitHub 

编写文档

参见: OpenAPI Specification - Version 3.0.3 | Swagger

我们如果把一个OpenAPI文档 当成一个对象,那么 OpenAPI Object 包括 openapi、info、jsonSchemaDialect、servers、paths 等10个字段。

下面,依次讲解常用的几个字段:

  1. # 这part为整个OpenAPI文档的metadata部分
  2. openapi: 3.0.0 # 用于指定当前配置文件基于哪个版本
  3. info: # 用于描述当前的基本信息
  4. title: ""
  5. description: ""
  6. version: ""
  1. # 这part定义了一个可以访问的server列表,用于api的测试
  2. servers:
  3. - url:
  4. description:
  1. # 这part用于定义实际的每个api, 示例如下:
  2. paths:
  3. /users:
  4. get:
  5. summary: Returns a list of users.
  6. description: Optional extended description in CommonMark or HTML.
  7. responses:
  8. '200': # status code
  9. description: A JSON array of user names
  10. content:
  11. application/json:
  12. schema:
  13. type: array
  14. items:
  15. type: string
  1. # components这部分用于定义可以复用的数据结构,示例如下:
  2. components:
  3. schemas:
  4. User:
  5. type: object
  6. properties:
  7. id:
  8. type: integer
  9. example: 4
  10. name:
  11. type: string
  12. example: Arthur Dent
  13. # Both properties are required
  14. required:
  15. - id
  16. - name
  17. paths:
  18. /users/{userId}:
  19. get:
  20. summary: Returns a user by ID.
  21. parameters:
  22. - in: path
  23. name: userId
  24. required: true
  25. schema:
  26. type: integer
  27. format: int64
  28. minimum: 1
  29. responses:
  30. '200':
  31. description: OK
  32. content:
  33. application/json:
  34. schema:
  35. $ref: '#/components/schemas/User' # <-------
  36. /users:
  37. post:
  38. summary: Creates a new user.
  39. requestBody:
  40. required: true
  41. content:
  42. application/json:
  43. schema:
  44. $ref: '#/components/schemas/User' # <-------
  45. responses:
  46. '201':
  47. description: Created