Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core 7
В прошлой теме был создан контроллер Web API, и протестирована работа метода GET. Однако напрямую из строки браузера кроме запросов GET другие типы запросов мы протестировать не можем. Конечно, мы можем создать клиент в виде веб-страницы, мобильного приложения под какую-нибудь платформу или даже графического или консольного десктопного приложения, но создание клиента может занять довольно много времени, тогда как нам просто надо протестировать обработку запросов.
Для тестирования контроллера Web API можно применять специальные инструменты, которые устанавливаются в виде отдельных приложений, либо в виде расширений для браузеров, например, Fiddler или Postman. Однако Visual Studio предоставляет еще один способ - ввод команд в окне Package Manager Console, которое для отправки запросов использует оболочку PowerShell.
Например, в моем случае приложение запускается по адресу http://localhost:54427. Поэтому для тестирования GET-запроса на получение списка объектов от контроллера UsersController я должен ввести в Package Manager Console следующую команду:
Invoke-RestMethod http://localhost:54427/api/users -Method GET
Для тестирования другого GET-метода, который возвращает пользователя по id, введем другой запрос:
Invoke-RestMethod http://localhost:54427/api/users/1 -Method GET
И Package Manager Console выведет:
id name age -- ---- --- 1 Tom 26
Для тестирования POST-запроса необходимо передать объект в формате json с указанием некоторой дополнительной информацией. В моем случае команда выглядела бы так:
Invoke-RestMethod http://localhost:54427/api/users -Method POST -Body (@{name = "Bob"; age = 35} | ConvertTo-Json) -ContentType "application/json; charset=utf-8"
Аргумент -Body
в этой команде указывает на тело запроса - тот объект, который будет отправляться на сервер. В моем случае это объект
класса User, поэтому все его значения имеют ключи, которые соответствуют названиям свойств класса User.
Кроме того, указываем с помощью флага ConvertTo-Json
, что объект будет отправляться в формате JSON.
А дополнительный аргумент -ContentType
устанавливает в запросе заголовок Content-Type
. В итоге эта команда возвратит
следующий результат:
id name age -- ---- --- 3 Bob 35
После этого мы можем повторно получить список пользователей и увидеть в нем добавленный объект:
Для тестирования PUT-запроса передается так же объект, только в данном случае уже надо указать id редактируемого объекта:
Invoke-RestMethod http://localhost:54427/api/users -Method PUT -Body (@{id = 3; name = "Bob Marley"; age = 44} | ConvertTo-Json) -ContentType "application/json"
В запросе DELETE необходимо передать id удаляемого объекта:
Invoke-RestMethod http://localhost:54427/api/users/3 -Method DELETE
Теперь рассмотрим, как использовать Fiddler. Загрузим установочный пакет по ссылке и установим.
После установки запустим проект в Visual Studio на выполнение. Параллельно откроем программу Fiddler и перейдем на вкладку Composer. На этой вкладке мы можем выбрать тип запроса (GET/POST/PUT/DELETE) и установить адрес. Так как я буду обращаться к методу, возвращающему список пользователей, то в моем случае это будет запрос GET и адрес http://localhost:54427/api/users/.
После ввода адреса нажмем на кнопку Execute. После осуществления запроса в левом поле-списке запросов выберем сделанный только что запрос, и на вкладке Inspectors можно будет увидеть результат запроса - список пользователей, который Fiddler получает в сериализованном виде: