Как использовать Swagger с динамическими параметрами из метода действий Web API?

имя дубликата массива

, если вы используете имя дубликата массива, последний массив должен быть заменен в первом массиве.

0
задан mason 21 January 2019 в 20:26
поделиться

1 ответ

Суть Swagger в том, что он использует сигнатуры вашего метода для генерации документации о том, как работает ваш код. Обход всех нормальных веб-API и выбор чтения необработанного HTTP-запроса означает, что Swagger не может видеть, что вы делаете, что затрудняет автоматическое определение того, что делает ваш код. Техника, которую вы используете для чтения необработанного запроса и использования динамического, имеет ряд других недостатков.

  • Вы не получаете Intellisense для своих объектов
  • Это не функционально , то есть сложнее сказать, посмотрев на метод, что он принимает как ввод и вывод, что делает это труднее понять
  • Труднее провести модульное тестирование вашего кода, потому что теперь вам нужно создать HTTP-запрос для вашего контроллера Web API
  • Для него требуется больше кода, чем для работы с правильными объектами [ 117]

Вместо этого мы должны определить подходящую модель для публикации в нашем API. Это позволит Web API выполнять свою работу, механизм связывания будет обрабатывать преобразование запроса в экземпляр CreateAccountRequest.

public class CreateAccountRequest
{
    public string Email { get; set; }

    public string Name { get; set; }

    public string Domain { get; set; }
}

Тогда мы можем заставить наш метод действия взять этот экземпляр этого класса в качестве параметра.

[HttpPost]
[ActionName("create-account")]
public IHttpActionResult CreateAccount(CreateAccountRequest request)
{
    //now here you can validate the request if you want
}

Swagger должен быть в состоянии понять этот метод сейчас, что позволяет NSwag генерировать полезного клиента.

Обратите внимание, что вместо пользовательской проверки C # вы должны изучить встроенные инструменты, которые Web API предоставляет для проверки модели . Тогда все, что вам нужно сделать, это проверить ModelState, а не проверять вручную каждый параметр. Другие инструменты также могут посмотреть на атрибуты ваших моделей, улучшая их опыт.

0
ответ дан mason 21 January 2019 в 20:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: