. NET Базовый веб-API с Swagger: разместить файл и данные на одном вызове - PullRequest
0 голосов
/ 13 марта 2020

Я создал. NET Core 3.1 Web API и использую сваггер для документации / предварительного просмотра. Я хочу как загрузить файл, так и отправить длинные данные на пост-звонок. Я могу сделать 1 звонок, чтобы загрузить данные, и это работает. Я могу сделать еще один вызов для отправки данных объекта, и это работает. Но попытка объединить 2 вместе (используя интерфейс чванства для заполнения данных) никогда не попадает в метод и выдает ошибку: Unsupported Media Type.

    [HttpPost]
    [Route("Send")]
    public void Send(IFormFile file, Email emailInfo)
    {

    }

    [HttpPost]
    [Route("Test")]
    public void Test(IFormFile file)
    {

    }

    public class Email
    {
        public List<string> To { get; set; }
        public string Body { get; set; }
        public string Subject { get; set; }
        public IFormFile Files { get; set; }
    }

Одна вещь, которую вы может появиться сообщение «Отправить». У меня есть IFromFile в качестве параметра, но IFromFile в объекте электронной почты также. По какой-то причине, чтобы Swagger показывал кнопку выбора файла в параметрах, которые должны были быть в обоих местах.

1 Ответ

0 голосов
/ 24 марта 2020

Попробуйте использовать привязку [Из запроса]:

    [HttpPost]
    [Route("Send")]
    public void Send([FromQuery] Email emailInfo)
    {
        var emailFromParam = emailInfo;
    }

Ввод:

Swagger params

Отладочный вывод, показывающий значения параметров:

Debug window showing param values

...