模型表单-YAML文件中使用Swagger 2.0的数据体请求表单、模型、文件、数据

由网友(容嬷嬷投胎后做了班主任)分享简介:我使用的是swagger 2.0,我有一个终结点,它使用表单数据作为请求的有效负载,我在几个地方使用相同的表单数据主体请求,我不想一次又一次地编写它(复制它),我不知道如何在我的YAML文件中对其建模(当对象作为请求主体的一部分作为有效负载时,我知道如何对其建模)。这是我尝试建模的表单数据有效负载:我查看了Swagg...

我使用的是swagger 2.0,我有一个终结点,它使用表单数据作为请求的有效负载,我在几个地方使用相同的表单数据主体请求,我不想一次又一次地编写它(复制它),我不知道如何在我的YAML文件中对其建模(当对象作为请求主体的一部分作为有效负载时,我知道如何对其建模)。

这是我尝试建模的表单数据有效负载:

深度学习 七 RangeNet 代码运行与与学习

我查看了Swagger的文档:https://swagger.io/docs/specification/2-0/file-upload/

并尝试执行相同的操作,但收到如下错误:

我不想复制相同的值(如果我这样做了,它会起作用,但解决方案不会很好)。

推荐答案

在OpenAPI2.0中,您只能重用单个表单域/参数的定义。无法重复使用一组字段/参数。

swagger: '2.0'

parameters:
  name:
    in: formData
    name: name
    type: string
  upfile1:
    in: formData
    name: upfile1
    type: file
  ...

paths:
  /foo:
    post:
      consumes:
        - multipart/form-data
      parameters:
        - $ref: '#/parameters/name'
        - $ref: '#/parameters/upfile1'
        - ...

  /bar:
    post:
      consumes:
        - multipart/form-data
      parameters:
        - $ref: '#/parameters/name'
        - $ref: '#/parameters/upfile1'
        - ...

要重用整个请求体定义,您需要OpenAPI 3.0。在OAS 3中,请求主体可以在全局components/requestBodies部分中定义,并使用$ref引用:

openapi: 3.0.0

paths:
  /foo:
    post:
      requestBody:
        $ref: '#/components/requestBodies/statusMode'
      responses:
        ...

  /bar:
    post:
      requestBody:
        $ref: '#/components/requestBodies/statusMode'
      responses:
        ...

components:
  requestBodies:
    statusMode:
      required: true
      content:
        multipart/form-data:
          schema:
            type: object
            # The properties correspond to individual form fields
            properties:
              name:
                type: string
              upfile1:
                type: string
                format: binary
阅读全文

相关推荐

最新文章