模型表单-YAML文件中使用Swagger 2.0的数据体请求 [英] Model form-data body request using Swagger 2.0 in yaml file

查看:0
本文介绍了模型表单-YAML文件中使用Swagger 2.0的数据体请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

我查看了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

这篇关于模型表单-YAML文件中使用Swagger 2.0的数据体请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆