Swagger 3.0切换requestBody的类型,按路径

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swagger 3.0切换requestBody的类型,按路径相关的知识,希望对你有一定的参考价值。

我正在使用swagger 3.0。根据Swagger send body and formData parameterswagger 2.0 specifications,对于同一操作,type:bodytype:formData不能同时存在。那很有意义,我想知道是否有一种方法可以根据路径切换requestBody?当store为path1时,requestBody将内容与application/json一起使用;存储为path2,requestBody将内容与multipart/form-data一起使用;

  /customs/store:
    post:
      description: Customs server calls Nomad to receive the filing result of one
        order
      operationId: post_customs_callback
      parameters:
      - description: ID of the store.
        explode: true
        in: path
        name: store
        required: true
        schema:
          type: string
        style: simple
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties: # Request parts
                openReq:
                  type: string

#          application/json:
#            schema:
#              type: string
        description: Order details
答案

OpenAPI规范没有办法根据特定的参数值来更改请求/响应主体。但是,在您的方案中,可以改为使用两个非参数化路径– /customs/path1用于JSON请求,/customs/path2用于多部分请求。

openapi: 3.0.0
...

paths:
  /customs/path1:
    post:
      ...
      requestBody:
        required: true
        content:
          application/json:
            schema:
              ...

  /customs/path2:
    post:
      ...
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              ...

以上是关于Swagger 3.0切换requestBody的类型,按路径的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot + Swagger + Swagger UI 和 @RequestBody 具有数据类型 String

Swagger (Springfox) 仅查找 Controller @RequestBody (Spring Boot) 中使用的模型

Swagger 3.0快速入门

Swagger 3.0快速入门

Swagger 3.0框架搭建及简单示例

Swagger 3.0框架搭建及简单示例