Используемый стек технологий: Java8, Spring Framework, Spring Boot, Spring Security, Hibernate
| Ресурс | GET | POST | PUT | DELETE |
|---|---|---|---|---|
| все пользователи | ||||
| /restaurants/menus | просмотр текущего меню ресторанов | - | - | - |
| /restaurants/votes/results | просмотр текущих результатов голосования | - | - | - |
| /users/reg | - | добавить пользователя | - | - |
| аутентифицированные | ||||
| /restaurants/1/vote | - | добавить голос за ресторан с ID=1 | - | - |
| администраторы | ||||
| /restaurants/votes | - | просмотр голосов | - | удалить текущие результаты голосования |
| /restaurants/menus/all | - | - | - | удалить текущее меню ресторанов |
| /restaurants/1/dish/1 | - | добавить в меню ресторана ID=1 блюдо ID=1 | - | удалить из меню ресторана ID=1 блюдо ID=1 |
| /users | список пользователей | добавить пользователя | - | - |
| /users/1 | вывести пользователя с ID=1 | - | обновить пользователя с ID=1 | удалить пользователя с ID=1 |
| /dishes | список доступных блюд | добавить блюдо | - | удалить все блюда |
| /dishes/1 | вывести блюдо с ID=1 | - | обновить блюдо с ID=1 | удалить блюдо с ID=1 |
| /restaurants | список доступных ресторанов | добавить ресторан | - | удалить все рестораны |
| /restaurants/1 | вывести ресторан с ID=1 | - | обновить ресторан с ID=1 | удалить ресторан с ID=1 |
Доступ к праву голосования имеют только зарегистрированные пользователи (базовая HTTP авторизация).
По умолчанию создаются:
- три ресторана
- десять блюд (цены в случайном порядке)
- два пользователя:
- Пользователь (login: user, password: user)
- Администратор (login: admin, password: admin)
Процесс голосования:
- Шаг 1: Если вы не зарегистрированы, необходимо зарегистрировать нового пользователя (к примеру: пользователь "test" c паролем "password")
curl -v -d "{\"login\":\"test\",\"password\":\"password\"}" -H "Content-Type: application/json" -X POST http://127.0.0.1:8080/users/reg
- Шаг 2: Просмотреть текущее меню всех ресторанов
curl -v http://127.0.01:8080/restaurants/menus
- Шаг 3: Голосовать за выбранный ресторан пользователем test (к примеру: ресторан с id = 1)
curl -v -u test:password -X POST http://127.0.01:8080/restaurants/1/vote
(примечание: пользователь может голосовать только до 11:00 текущего дня, учитывается только последний голос)
- Шаг 4: Просмотреть общие результаты голосования
curl -v http://127.0.01:8080/restaurants/votes/results
Подготовка к голосованию:
- Шаг 0: Очистить данные предыдущего голосования
очистить текущие результаты голосования1
curl -v -u admin:admin -X DELETE http://127.0.0.1:8080/restaurants/votes
очистить текущее меню ресторанов2 (если необходимо)
curl -v -u admin:admin -X DELETE http://127.0.0.1:8080/restaurants/menus/all
- Шаг 1: Сформировать новое меню ресторана
(добавить в меню ресторана с id=1, блюдо с id=1)
curl -v -u admin:admin -X POST http://127.0.0.1:8080/restaurants/1/dish/1
(удалить из меню ресторана с id=1, блюдо с id=1)
curl -v -u admin:admin -X DELETE http://127.0.0.1:8080/restaurants/1/dish/1
Другие действия администратора
Список ресторанов:
curl -v -u admin:admin http://127.0.0.1:8080/restaurants
Добавить ресторан:
curl -v -u admin:admin -d "{\"name\":\"newRestaurant\"}" -H "Content-Type: application/json" -X POST http://127.0.0.1:8080/restaurants
Удалить ресторан c id=1:
curl -v -u admin:admin -X DELETE http://127.0.0.1:8080/restaurants/1
Список блюд:
curl -v -u admin:admin http://127.0.0.1:8080/dishes
Добавить блюдо:
curl -v -u admin:admin -d "{\"name\":\"newDish\",\"price\":\"500\"}" -H "Content-Type: application/json" -X POST http://127.0.0.1:8080/dishes
Удалить блюдо c id=1:
curl -v -u admin:admin -X DELETE http://127.0.0.1:8080/dishes/1
- В процедуре очистки голосования предусмотреть возможность переноса данных в архивную БД
- В процедуре очистки ресторанного меню предусмотреть возможность переноса данных в архивную БД