Укажите тип содержимого для файлов в multipart / form-data для Swagger - PullRequest
3 голосов
/ 17 июня 2019

Я реализовал конечную точку с этой подписью

[HttpPost("Test")]
public IActionResult MyTest([Required] IFormFile pdf, [Required] IFormFile image)
{
    // some stuff...

    return Ok();
}

генерирует следующую запись в swagger.json (соответствующая часть)

"content": {
    "multipart/form-data": {
        "schema": {
            "required": [
                "image",
                "pdf"
            ],
            "type": "object",
            "properties": {
                "pdf": {
                    "type": "string",
                    "format": "binary"
                },
                "image": {
                    "type": "string",
                    "format": "binary"
                }
            }
        },
        "encoding": {
            "pdf": {
                "style": "form"
            },
            "image": {
                "style": "form"
            }
        }
    }
}

но мне также нужно указать кодировку, как в спецификации (v3). Так что для моей задачи этот JSON должен выглядеть следующим образом, я думаю ...

"encoding": {
    "pdf": {
        "style": "form",
        "contentType": "application/pdf"
    },
    "image": {
        "style": "form",
        "contentType": "image/png, image/jpeg"
    }
}

Но как я могу это сделать из кода? Я думал о атрибуте SwaggerParameter , но он содержит только описание и требуемый флаг ...

Я использую пакет Swashbuckle.AspNetCore NuGeT (версия 5.0.0-rc2) в .NET Core 2.2.

1 Ответ

0 голосов
/ 21 июня 2019

Вы также можете взглянуть на ISchemaFilter и следующую проблему:

https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/1148

Это может помочь вам отфильтровать для вашей операции и добавить diffrent contentStyles для того же типа (IFormInput).

Я считаю, что то, чего вы хотите достичь, в настоящее время возможно только с помощью пользовательского атрибута, однако есть активная ветвь для расширенной поддержки FormsInput в активной разработке, возможно, вы можете добавить запрос на добавление функции.

https://github.com/domaindrivendev/Swashbuckle.AspNetCore/commits/enhance-support-for-forms

...