【问题标题】:Open Api documentation for a single endpoint multiple posts request为单个端点多个帖子请求打开 Api 文档
【发布时间】:2018-02-25 06:19:21
【问题描述】:

我正在尝试为我的单端点 API 提供 Swagger/Open Api 文档。

我的单个端点看起来像

发帖:http://localhost/api/v1/process

帖子正文决定逻辑路径和响应模式

Body1: {"jsonClass": "AnimalsRankedByLifeSpan"} Response1: schema-1

Body2: {"jsonClass": "AnimalsInRegion", "region":"Africa", "type":"lions"} Response2: schema-2

来自文档的期望:每个 jsonClass 都在 swagger(或任何其他)中列为单独的调用,我可以使用规范来获得所有支持的 jsonClass。

貌似,swagger 支持这种设计。如果有,请指点我的例子。

我可以使用任何其他 Api 文档框架来为支持的每种 jsonClass 提供请求-响应文档吗?

【问题讨论】:

标签: swagger openapi


【解决方案1】:

OpenAPI 2.0 和 3.0 无法在同一操作中将不同的请求模式映射到不同的响应模式。以下是相应的功能请求:Support an operation to have multiple specifications per path (e.g. multiple POST operation per path)

目前,如果您使用 OpenAPI 3.0,则可以使用 oneOf 为请求和响应定义多个可能的模式。但是,您不能定义 Body1 产生 schema-1 响应和 Body2 产生 schema-2 响应。您只能在操作description 中口头记录这一点。

openapi: 3.0.0
...

paths:
  /foo:
    post:
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
                - $ref: '#/components/schemas/Body1'
                - $ref: '#/components/schemas/Body2'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/schema-1'
                  - $ref: '#/components/schemas/schema-2'

【讨论】:

    【解决方案2】:

    我在路径中使用了 Empty Character(https://emptycharacter.com/)。它不会出现在招摇的 UI 中。但它仍然存在(就像在 curl 中一样),我得到了 400。

    【讨论】:

    • 空白字符可能不会显示在 swagger UI 中显示的 cURL 中,但它们仍然包含在那里(尝试在终端中复制它)和请求中,不是吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    • 2016-08-26
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多