Следование шаблону REST при реализации Web-приложений
Документация
Приложение, реализованное на лекции, можно скачать по ссылке.
Задача
Создайте веб-приложение, позволяющее вести журнал просмотренных фильмов для членов кружка любителей кино. Приложение должно позволять:
- Просматривать список фильмов, просмотренных членами кружка.
- Добавлять новый фильм в список фильмов.
- Изменять информацию о фильме.
- Просматривать отзывы членов кружка о фильме.
- Добавлять отзыв о фильме.
- Изменять отзыв о фильме.
Фильм описывается следующими полями:
- Название.
- Продолжительность.
- Ссылка на кинопоиск.
Отзыв описывается следующими полями:
- Автор отзыва.
- Текст отзыва (лучше всего будет, если он в формате markdown).
- Оценка от 0 до 5 с шагом в 0.5.
Дополнительные действия
Данные действия следует реализовать, если вы полностью реализовали все предыдущие. При добавлении пользователя выбор автора должен будет осуществляться из списка.
- Просматривать список всех членов кружка.
- Добавлять нового члена кружка.
- Изменять информацию о члене кружка.
- Удалять информацию о фильме.
- Удалять комментарий к фильму.
- Удалять члена кружка клуба.
Член кружка описывается следующими полями:
- Имя
- Фамилия
- Псевдоним
- Дата вступления в клуб
- Дата выхода из списка активных членов клуба
Технические требования
- Достаточно описать всю таблицу маршрутизации в рамках одного файла.
- Сохранять данные можно в оперативной памяти, не надо реализовывать их хранение на диске или в базе данных.
- На формах должна быть реализована валидация данных на стороне сервера.
- При возвращении формы, в которой были допущены ошибки, её поля должны быть заполнены данными, введёнными пользователем.
Рекомендации по организации маршрутов
Ваше приложение должно обрабатывать следующие запросы
get /
- перенаправление на/movies
.get /movies
- отображение списка фильмов.get /movies/new
- отображение формы на добавление фильма.post /movies/new
- обработка результатов добавления формы. После успешного добавления должна происходить переадресация на созданную страницу фильма.get /movies/:id
- отображение информации о фильме с уникальным номеромid
. На странице также отображаются комментарии.get /movies/:id/edit
- отображение формы на редактирование фильма.post /movies/:id
- обработка результата заполнения формы на редактирование фильма.get /movies/:id/comments/new
- отображение формы на добавление комментария.post /movies/:id/comments/new
- обработка результатов добавления формы. После успешного добавления пользователь должен быть перемещён на страницу фильма.get /movies/:id/comments/:comment_id/edit
- отображение формы на редактирование комментария.post /movies/:id/comments/:comment_id
- обработка результатов формы на изменение комментария. После успешного изменения должна отобразиться страница фильма