Swashbuckle 5 и multipart / form-data с пользовательским классом - PullRequest
0 голосов
/ 24 апреля 2020

Я создаю ASP. NET Web API 2 и использую Swashbuckle v.5.6 для создания документации по чванству. У меня есть функция POST для загрузки файла с некоторыми метаданными. Метаданные представляют собой JSON типа DocumentMetadataModel. Функция не имеет никаких параметров, поэтому я использую MultipartStreamProvider для получения данных multipart / form. Для класса метаданных DocumentMetadataModel я реализовал интерфейс IExamplesProvider. Я также реализовал IOperationFilter, но не могу понять, как правильно добавить параметр DocumentMetadataModel. Мне удалось поместить пример в описание, но это не очень хорошее решение:

if (operation.operationId.Equals("Documents_Post", StringComparison.CurrentCultureIgnoreCase))
{
    if (operation.parameters == null)
        operation.parameters = new List<Parameter>(1);
    else
        operation.parameters.Clear();

    operation.parameters.Add(new Parameter
    {
        name = "File",
        @in = "formData",
        description = "File",
        required = true,
        type = "file"
    });

//hack:
    var provider = (Swashbuckle.Examples.IExamplesProvider)Activator.CreateInstance(typeof(DocumentMetadataModel));
    var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(provider.GetExamples());
    var result = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonString);

    operation.parameters.Add(new Parameter
    {
        name = "Metadata",
        @in = "formData",
        description = $"Example:{result}",
        required = true,
        type = "string"
    });
}

Может ли кто-нибудь помочь мне правильно добавить DocumentMetadataModel?

...