swagger - 打开单个端点多个帖子请求的 Api 文档

标签 swagger openapi

我正在尝试为我的单一端点 API 获取 Swagger/Open Api 文档。

我的单一端点看起来像

POST: http://localhost/api/v1/process

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

正文 1:{“jsonClass”:“AnimalsRankedByLifeSpan”} Response1: schema-1

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

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

不像,swagger支持这种设计。如果是这样,请指出示例。

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

最佳答案

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'

关于swagger - 打开单个端点多个帖子请求的 Api 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46250030/

相关文章:

swagger - 编写使用多种内容类型的 swagger 文档,例如application/json AND application/x-www-form-urlencoded (不重复)

java - API 文档 Swagger 中遗漏添加了 ExclusiveMaximum 注释

java - Swagger Spring - 编辑 URL

json - 使用 Swagger/OpenAPI 扩展 JSON 元数据

spring - 使用 Spring Boot 自定义 OpenApi 文档

java - swagger jersey 2.5 Rest API 集成不起作用

java - 开放API 3.0.1只读注解

java - @ApiResponse 响应主体为空(Spring Boot)

json - OpenAPI:接受任何(复杂)JSON值的模式

java - 如何在 swagger codegen 中处理多种响应/返回类型(204 为空,400 非空等)?