如何在OpenAPI中指定多文件上传?

时间:2019-01-23 19:34:13

标签: json file-upload swagger multipartform-data openapi

我正在尝试生成数据以填充我的代码库中的OpenAPI 3.0输入。

我有一个休息端点,用于将文件上传到服务器。

我有一个表单作为聚合物vaadin上载组件,用于上载文件。路径为/upload-all,表单参数名称为my-attachment。表单可以将文件正确上传到服务器,所以这不是问题。

服务器端点是使用XQRS RestXQ Uploading Files in HTML Forms规范实现的。

我正在尝试为分段文件上传的OpenAPI 3.0 UI创建一个OpenAPI JSON输入。这是我尝试过的:

"/upload-all": {
    "post": {
        "consumes": ["multipart/form-data"],
        "description": "Upload zip file to the server",
        "responses": {
            "content": {
                "application/json": {
                    "schema": {
                        "type": "object"
                    }
                }
            }
        },
        "parameters": [
            {
                "in": "formData",
                "schema": {
                    "type": "array",
                    "items": {
                        "type": "file"
                    }
                },
                "name": "my-attachment"
            }
        ]
    }
},

我收到一个错误,提示未填充表单参数my-attachment。我想念什么?我无法在OpenAPI网站上找到明确的规范。

更新: 我尝试将代码的输出更改为:

"/upload-all": {
    "post": {
        "requestBody": {
            "content": {
                "multipart/form-data": {
                    "schema": {
                        "properties": {
                            "my-attachment": {
                                "type": "array",
                                "items": {
                                    "format": "binary",
                                    "type": "string"
                                }
                            }
                        }
                    }
                }
            }
        },
        "description": "Upload zip file to the server",
        "responses": {
            "content": {
                "application/json": {
                    "schema": {
                        "type": "object"
                    }
                }
            }
        }
    }
},

OpenAPI用户界面显示以下内容:

OpenAPI UI

应该是这样的:

file uploads

OpenAPI UI是最新且最新的。这里缺少什么?

1 个答案:

答案 0 :(得分:1)

您快到了-只需将"type": "object"添加到您的请求正文模式中即可:

        "requestBody": {
            "content": {
                "multipart/form-data": {
                    "schema": {
                        "type": "object",   // <-------
                        "properties": {
                            "my-attachment": {
                                ...