4. Types for request and response

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. Запущены все тесты, которые прошли успешно.

Если вы хотите узнать больше о работе с моделями данных, посмотрите следующее видео. Не забудьте подписаться на канал и поставить лайк!