Домашнее задание по спринту “Программные интерфейсы”
Как вы уже знаете, стриминговый сервис Оtium — это онлайн-кинотеатр с обширной библиотекой фильмов и сериалов. Чтобы привлечь новых пользователей, компания хочет добавить на платформу телеканалы. Сейчас архитектура Otium уже включает в себя сервисы «Фильмы» и «Сериалы». Поэтому архитектор Ксения решила, что самым оптимальным вариантом будет реализация нового сервиса «ТВ-каналы». Для этих целей компания обратилась к RANA.Software.
У стримингового сервиса Оtium уже есть веб-приложение, приложение для компьютера, мобильного и смарт-ТВ, в котором пользователь может:
Авторизоваться в системе.
Познакомиться с библиотекой фильмов и сериалов, а также отфильтровать список фильмов и сериалов по жанрам и средней оценке других пользователей. Например, можно посмотреть список лучших фильмов в жанре комедии.
Прочитать подробную информацию о каждом фильме и сериале на детальной странице.
Добавить в избранное фильм или сериал (это действие возможно выполнить только с детальной страницы).
Посмотреть свой список избранных фильмов или сериалов.
Удалить из списка избранного фильм или сериал.
У пользователя должна появиться возможность сделать эти же действия с телеканалами.
Для реализации сервиса «ТВ-каналы» вам необходимо помочь Дане и Айгуль и изучить архитектуру Оtium и существующие возможности взаимодействия пользователя с фильмами. Для этого вам необходимо выполнить следующие задачи.
Задачи
Проанализируйте представленную диаграмму компонентов в нотации UML.
Изучите коллекцию существующих запросов REST API сервиса «Фильмы»: проверьте запросы, параметры запросов и тело ответа.
Составьте диаграмму последовательности в нотации UML для взаимодействия пользователя с новым сервисом «ТВ-каналы». За основу вам нужно взять API сервиса «Фильмы», который вы изучили на предыдущем шаге.
В этом задании вы попрактикуетесь с одной из распространённых рабочих задач системного аналитика: изучить существующее API, проанализировать тело запроса и ответа, а после определить, что нужно сделать для реализации новой функциональности.
Диаграмма компонентов
Ксения подготовила диаграмму компонентов в нотации UML стримингового сервиса Otium и учла в ней добавление нового сервиса ТВ-каналов.
Проанализируйте представленную диаграмму для понимания архитектуры и взаимодействия компонентов в онлайн-кинотеатре Otium.
Работа с API
Теперь вам предстоит познакомиться с API сервисов «Фильмы» и «Пользователи», используя сервис Postman.
В разделах «Collections» и «Environments» у вас должны появиться импортированные файлы.
Далее вам предстоит прочитать документацию и протестировать запросы:
a. Откройте документацию сервиса «Фильмы». Нажмите на три точки рядом с коллекцией «Collection Films» и в выпавшем списке выберите «View documentation».
b. В открывшемся документе вы найдете описание двух запросов, которые позволяют получить информацию из сервиса «Фильмы». Изучите структуру документации:
метод, ресурс, название запроса указаны в верхней части документа;
в блоке Query Params есть подробное описание параметров запроса (обязательный или опциональный) и типа данных (string, number, array и прочие);
в блоке Response вы найдете пример тела ответа в стиле JSON.
c. Выберите первый в списке запрос GET Список фильмов и кликните на кнопку «Open Request», которая расположена рядом с названием. В открывшемся окне проверьте запрос и его параметры, убедитесь, что установлена среда тестирования Production и сделайте запрос, нажав на кнопку «Send». Посмотрите тело ответа на запрос.
Обратите внимание, что в работе вы используете мок-сервер — виртуальный сервер, который позволяет имитировать взаимодействие сервисов. Мок-сервер не имеет бэкэнда. Все ответы на запросы хранятся на сервере и не обрабатываются бэкендом.
Поэтому если вы введёте в параметры запроса некорректные данные, то сервер вернёт сообщение об ошибке:
JSON
{
"error": {
"name": "mockRequestNotFoundError",
"message": "Double check your method and the request path and try again.",
"header": "No matching requests"
}
}
d. В том же окне добавьте в запрос параметр genre=comedy и выполните запрос ещё раз. Посмотрите, как изменился JSON. Попробуйте выполнить тот же самый запрос с разным значением параметра genre. Возможные значения параметров указаны в разделе Query Params документации.
e. Выполните аналогичные действия для другого запроса в коллекции.
f. Посмотрите документацию и запросы коллекции «Collection Users».
Диаграмма последовательности
Скачайте рабочий файл и откройте его в программе https://app.diagrams.net/, с которой вы взаимодействовали в предыдущих спринтах. В рабочем файле вы найдёте пошаговую инструкцию по выполнению домашнего задания.
Перед началом работы убедитесь, что на панели фигур у вас присутствуют коллекции элементов UML.
Как работать с коллекцией элементов UML вы знаете из предыдущих спринтов.
Составьте диаграмму последовательности в нотации UML для взаимодействия пользователя с ТВ-каналами на основе текущего API сервиса «Фильмы».
Подсказки для составления диаграммы:
a. Какие действия пользователь должен иметь возможность сделать в приложении?
b. Какие объекты нужны для выполнения каждого действия?
c. Как будет выглядеть поток сообщений между объектами при выполнении каждого действия?
d. Какие запросы нужно выполнить, чтобы получить нужную информацию?
e. А если пользователь на этапе авторизации введет неверные логин или пароль, как изменится поток сообщений?
Когда задание будет выполнено, сохраните файл в формате .drawio. Загрузите его на Яндекс.Диск (или в другой файлообменник) и отправьте ревьюеру на проверку.