Skip to content

REST API server for project: А restaurant lunch menu of the day

Notifications You must be signed in to change notification settings

bridennis/spring-boot-rest-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status codecov

Проект голосования: restaurant lunch menu of the day

Используемый стек технологий: Java8, Spring Framework, Spring Boot, Spring Security, Hibernate

REST API

Ресурс 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

Замечания (на будущее):

  1. В процедуре очистки голосования предусмотреть возможность переноса данных в архивную БД
  2. В процедуре очистки ресторанного меню предусмотреть возможность переноса данных в архивную БД

About

REST API server for project: А restaurant lunch menu of the day

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages