4. Types for request and response
Типизация Request и Response
Обзор раздела: В этом видео мы будем типизировать наши request и response, используя генерацию моделей из Swagger документации.
Генерация типов из Swagger документации
- Будем использовать библиотеку OpenAPI TypeScript для конвертации схем валидных типов интерфейсов.
- Для удобства работы с документацией, рекомендуется генерировать модели автоматически перед каждым запуском тестов.
- Сгенерированные интерфейсы могут быть импортированы в проект и использованы для типизации объектов.
Использование сгенерированных типов
- Указываем, что именно нам возвращается из API в наших response of.
- При помощи указания параметров принимаемых в request, можно упростить работу с API.
- Генерация типов позволяет не зависеть от документации при активной разработке и написании новых тестов.
Генерация типов перед запуском тестов
- Рекомендуется добавить скрипт npm run test для автоматической генерации API интерфейсов перед каждым запуском тестов.
- Для удобства работы, рекомендуется создать отдельную папку для хранения сгенерированных типов.
Использование готовых интерфейсов
- Готовые интерфейсы могут быть использованы для описания сущностей в приложении и операций над ними.
- В Swagger документации можно найти много полезной информации, которая может помочь в разработке.
Заключение
- Регулярная генерация типов из Swagger документации позволяет упростить работу с API и не зависеть от документации.
Использование типов в TypeScript
Обзор раздела: В этом разделе мы рассмотрим использование типов в TypeScript для более точного определения объектов и запросов.
Создание объекта с помощью типизации
- Мы можем создавать объекты с помощью типизации, что позволяет нам указывать необходимые атрибуты.
- Если у нас есть проблема с отсутствующим обязательным атрибутом, мы можем использовать встроенный тип
Omitдля исключения этого атрибута из модели.
- Тип
Omitпозволяет нам создавать новый тип без определенных ключей.
Использование типизированных запросов
- Мы можем использовать наши определенные модели для указания того, какие запросы должны отправляться.
- Можно использовать специальный встроенный в TypeScript тип
Pick, чтобы выбрать только нужные поля из модели.
- Это позволяет нам автоматически обновлять нашу документацию при изменении моделей.
Типизированные ответы
- Мы также можем указывать ожидаемый ответ от сервера при отправке запросов.
- Мы можем использовать дженерики для указания типа ответа.
- Можно использовать
operationsвместоdefinitionsдля более автоматизированного стиля.
Практическое применение
- Пример показывает, как мы можем добавить новый опыт с помощью типизированных запросов и ответов.
- Использование авто комлита позволяет нам быстро получить доступ к нужным полям.
Типизация и тестирование
В этой секции рассматривается типизация и тестирование в Python.
Добавление типизации
- Добавление дополнительной типизации позволяет полностью описать методы, указав какие поля могут быть использованы.
- При использовании массивов, Python правильно определяет тип элемента массива.
- Убираем необязательные указания типов для циклов.
Написание тестов
- Написание тестов позволяет увеличить покрытие кода и дает больше информации о состоянии продукта.
- Пример написания теста на обновление инвентаря при добавлении нового товара.
- Написание проверок на каждый статус объекта.
Использование типизации в контроллерах
- Пример использования типизации в контроллере.
- Возвращаемый тип запроса должен быть указан явно.
Заключение
- Введение типизации и написание тестов помогает улучшить качество кода и продукта в целом.
Создание метода для работы с моделями данных
Обзор раздела: В этом разделе мы создаем метод, который будет готовить объекты на основе статуса.
Создание функции подходитСтатус
- Функция принимает статус в качестве параметра из definitions пэт. Статус должен быть одним из слов, используемых в приложении: available, pending или sold.
- Функция возвращает новый объект с тем же форматом, что и у нас уже есть. Мы заменяем значение статуса на переданный параметр.
- Для вызова функции мы передаем только один параметр - статус.
Проверка тестов
- Тесты успешно прошли после создания новой функции.
- Перед запуском тестов автоматически скачивается и компилируется файл types. Запущены все тесты, которые прошли успешно.
Если вы хотите узнать больше о работе с моделями данных, посмотрите следующее видео. Не забудьте подписаться на канал и поставить лайк!