如何扬鞭(OpenAPI的)文件发布?(How to post files in Swagger (

2019-07-18 13:17发布

我使用扬鞭来记录我的REST服务。 我的一个服务要求上传CSV文件。 我添加了下面的parameters在我的JSON API定义部分:

{
       "name": "File",
       "description": "The file in zip format.",
       "paramType": "body",
       "required": true,
       "allowMultiple": false,
       "dataType": "file"
}

现在我看到我扬鞭UI页面上的文件上传选项。 但是,当我选择一个文件,然后点击“尝试一下”,我得到以下错误:

NS_ERROR_XPC_BAD_OP_ON_WN_PROTO:在jquery的-1.8.0.min.js上WrappedNative原型对象非法操作(线2)

该页面被连续处理,我没有得到任何回应。

任何想法可能是错误的?

Answer 1:

OpenAPI的规范2.0

在扬鞭2.0( OpenAPI的规范2.0 ),使用的一种形式参数( in: formData )与type设置为文件 。 此外,操作的consumes必须是multipart/form-dataapplication/x-www-form-urlencoded或两者。

  consumes:
    - multipart/form-data  # and/or application/x-www-form-urlencoded
  parameters:
    - name: file
      in: formData   # <-----
      description: The uploaded file data
      required: true
      type: file     # <-----

OpenAPI的规范3.0

在OpenAPI的规范3.0 ,文件被定义为二进制字符串,即, type: string + format: binary (或format: byte ,这取决于使用情况)。 文件输入/输出的内容具有相同语义的任何其它模式类型(不像的OpenAPI 2.0)描述:

多部分请求,单个文件:

requestBody:
  content:
    multipart/form-data:
      schema:
        type: object
        properties:
          # 'file' will be the field name in this multipart request
          file:
            type: string
            format: binary

多部分请求,文件的数组:

requestBody:
  content:
    multipart/form-data:
      schema:
        type: object
        properties:
          # The property name 'file' will be used for all files.
          file:
            type: array
            items:
              type: string
              format: binary

POST / PUT文件直接(请求体是该文件的内容):

requestBody:
  content:
    application/octet-stream:
      # any media type is accepted, functionally equivalent to `*/*`
      schema:
        # a binary file of any type
        type: string
        format: binary

注:语义是同其他的OpenAPI 3.0模式类型:

# content transferred in binary (octet-stream):
schema:
  type: string
  format: binary

更多的信息:

  • 注意事项文件上传
  • 特别注意事项多内容
  • 文件上传和多部分请求


Answer 2:

终于让我找到了这个答案,其实以前有文件上传的支持,现在他们更新招摇,ui.js文件。 您需要替换旧的一个新的,你也必须定义的参数下的特定参数这些属性:

 "paramType": "body",
 "dataType": "file",


Answer 3:

矿似乎与合作

 "paramType": "formData",
 "dataType": "file",


文章来源: How to post files in Swagger (OpenAPI)?