REST
ЛР26
Создаем на Github репозиторий cwp-26, клонируем его, открываем в IDE
Устанавливаем express, moment, sequelize и yamljs
Будем разрабатывать REST API для веб-приложения вычисляющего совместные рабочие часы для распределенных команд
Опишем модели данных
User:
"id": int / autoincrement
"name": string
"email": string
"timezone": string
"validated": bool
"validationToken": string
Team:
"id": int / autoincrement
"name": string
"logo": string
WorkPeriod:
"id": int / autoincrement
"from": string
"to": string
"weekDays": string
"userId": int / reference to Users
"teamId": int / reference to Users
Учтём, что каждый пользователь может состоять в одной и более командах
Создадим набор REST API endpoint-ов для предоставления фукционала клиентской части
1. Пять endpoint-ов для CRUD операций с пользователями
2. Пять endpoint-ов для CRUD операций с командами
3. Два endpoint-а для добавления пользователя в команду и удаления из неё (будут вложены в путь команд)
4. Пять endpoint-ов для CRUD операций с рабочими интервалами (будут вложены в путь пользователей конкретных команд)
5. Endpoint для валидации пользователя с помощью validationToken (будет вложены в путь пользователей, придётся пойти на компромис и использовать GET)
6. Endpoint для вычисления совместных рабочих часов двух пользователей конкретной команды (самостоятельно решим где его разместить и под каким методом)
Метод чтения конкретной команды будет также всех пользователей входящих в неё, плюс, на основании рабочих интервалов, они должны содержать свой текущий статус - активен/неактивен.
Добавить в команду можно только провалидированного пользователя
Совместные рабочие часы для пользователей A и B вычисляются с учетом часового пояса A
В зависимости от заголовка Accept будем возвращать данные клиенту в формате json (по-умолчанию) или yaml.
Важно! Так как мы отдаём ответы в двух форматах то и принимать данные, например, для создания пользователя тоже должны в двух форматах
* Добавим поддержку ответов/запросов в формате xml
Задания со звездочкой предназначены для персонального роста и необязательны к показу при защите лабораторной работы
Покажите работу всех узлов REST API через Postman
Показать работу API в формате YAML
RESTful Best Practices