Claws Garden

基于OpenAPI3.0.3规范设计API

什么是OpenAPI?

OpenAPI是一种API描述格式,用来描述REST API,用yaml或json格式编写。换句话说,就可以是swagger编辑器中写的yaml的API文档。

Swagger是一套围绕OpenAPI设计、实现等操作的开源工具。最有名的是Swagger Editor 以及各种语言中Swagger的依赖,可以帮助根据注释等自动生成OpenAPI文档。

参考:About Swagger Specification | Documentation | Swagger

REST API设计规范

参考RESTful API 设计指南 - 阮一峰的网络日志 (ruanyifeng.com)

OpenAPI编写语法(YAML)

下面是我自己的一个OpenAPI3文档示例:

  1# 文档版本信息
  2openapi: 3.0.3
  3
  4# 文档基本信息
  5info:
  6  title: Seecoder统一代码服务API
  7  description: "Seecoder统一代码服务是给Seecoder平台其他组件提供代码仓库托管服务的组件"
  8  contact: 
  9    name: claws
 10    email: jingjiecb@gmail.com
 11  version: '1.0.0'
 12
 13# 服务器列表
 14servers:
 15  - url: https://seecoder-gitlab-server.seec.seecoder.cn
 16    description: 校外系统服务地址
 17  - url: https://seecoder-git-server.internal-paas.seec.seecoder.cn
 18    description: 校内系统服务地址
 19
 20# 标签(形成的渲染文档会以这个作为分隔)
 21tags:
 22  - name: user
 23    description: 用户相关接口
 24  - name: other
 25    description: 其他
 26
 27# API具体内容
 28paths:
 29  /api/user:
 30    post:
 31      summary: 创建Git用户
 32      description: 创建一个新的Git用户
 33      operationId: createUser
 34      requestBody: 
 35        content:
 36          application/json:
 37            schema:
 38              $ref: '#/components/schemas/GitUserDTO'
 39      responses: 
 40        '200':
 41          description: 添加成功
 42          content:
 43            application/json:
 44              schema: 
 45                type: object
 46                properties: 
 47                  res:
 48                    $ref: '#/components/schemas/GitUserVO'
 49  /api/user/changePassword:
 50    post:
 51      summary: 修改密码
 52      description: 修改一个学生的密码
 53      operationId: changePassword
 54      requestBody: 
 55        content:
 56          applictaion/json:
 57            schema:
 58            # 引用已定义的数据格式
 59              $ref: '#/components/schemas/ChangePasswordDTO'
 60      responses:
 61        '200':
 62          description: 有修改结果返回
 63          content:
 64            application/json:
 65              schema:
 66                type: object
 67                properties:
 68                  res:
 69                    type: boolean
 70                    description: 表示是否修改成功
 71        
 72# API中调用到的其他组件
 73components:
 74# 数据格式定义
 75  schemas: 
 76    Password:
 77      type: string
 78      format: password
 79      example: 123456
 80
 81    GitUserDTO:
 82      type: object
 83      properties: 
 84        userId:
 85          type: integer
 86          format: int32
 87        username:
 88          type: string
 89          # 数据格式中也可以嵌套引用其他数据格式
 90        password:
 91          $ref: '#/components/schemas/Password'
 92        email:
 93          type: string
 94          format: email
 95    GitUserVO:
 96      type: object
 97      properties:
 98        userId:
 99          type: integer
100          format: int32
101        gitlabUserId:
102          type: integer
103          format: int32
104          example: 111
105        namespaceId:
106          type: integer
107          format: int32
108          example: 111
109        token:
110          type: string
111    
112
113    ChangePasswordDTO:
114      type: object
115      properties: 
116        userId:
117          type: integer
118          format: int32
119        password:
120          $ref: '#/components/schemas/Password'

更多OpenAPI规范参考:OpenAPI Specification - Version 3.0.3 | Swagger

#网络