Swagger
Использование Swagger для поиска ошибок в приложении
Следующий инструмент, который мы можем использовать для тестирования и отладки приложения - Swagger. Мы уже знакомились с ним ранее, как вы помните, в нем можно увидеть все эндпойнты разрабатываемого приложения, запустить их и получить результат. Давайте разберем это более детально.
Авторизация в Swagger
Прежде всего вспомним о том, что для большинства эндпойнтов по умолчанию активирован Middleware Token Auth, который контролирует доступ к эндпойнту. Он запрещает доступ для пользователей, которые не прошли авторизацию, либо даже прошли ее, но не имеют соответствующих прав доступа (например, относятся к группе Users, а эндпойнт предназначен исключительно для Admins).
Необходимый токен авторизации можно узнать с помощью Инструментов Разработчика. Достаточно лишь пройти авторизацию в опубликованном веб-приложении, а после выполнить любой запрос. Токен будет использоваться в заголовках запроса (Request Headers). Например, его можно увидеть на скрине чуть выше, в тот момент, когда мы выполняли GET-запрос для получения данных о странах.
Разберем, как можно получить его прямо в Swagger. Для этого найдите эндпойнт, который отвечает за авторизацию (группа Auth, эндпойнт POST /Auth/) и нажмите кнопку Try it out. Данный эндпойнт принимает два параметра, Login и Password. Укажите их и нажмите Execute для отправки запроса. Кстати, тут тоже бывает полезно использовать Инструменты Разработчика, можете открыть их для более детального изучения запроса и ответа.
В ответе будет получен необходимый токен, а также детальная информация о пользователе и его сессиях.
Можно увидеть, что полученный ответ не сильно отличается от того, который мы и так видели в Инструментах Разработчика. При этом у Swagger’а есть неоспоримое преимущество в том, что он дает возможность тестировать любые запросы, в удобной форме запускать эндпойнты с необходимыми параметрами. Но прежде чем приступать к такому тестированию, нажмем Authorize и воспользуемся полученным токеном для подтверждения авторизации.
Отправка запросов используя Swagger
Теперь отправим запрос через Swagger для получения данных о первом попавшемся городе с населением более 5 миллионов человек и словом “World” в описании. Для этого откроем эндпойнт GET /city/ и заполним необходимые параметры:
- _limit = 1 (необходим только один город)
- population_from = 5000000 (должно проверяться значение населения)
- _search_in = info (ищем только в поле info)
- _search = World (ищем слово World)
В полученном ответе видно, что запрос был исполнен совершенно правильно. Получили информацию об одном таком городе (при этом видим, что count = 3, а это означает, что в базе есть информация о трех подходящих городах) и не получили никаких данных о том, в какой стране он находится (“country”: null), так как в запросе и не требовалось представлять данные из связанных таблиц (в случае необходимости стоило воспользоваться параметром _with).