Giter VIP home page Giter VIP logo

spring-app1's Introduction

Дмитриев Артём Вадимович, БПИ216, НИУ ВШЭ. Курс "Конструирование программного обеспечения", ИДЗ 4.

Стек

  • Язык: Java
  • Фреймворк: Spring Boot
  • СУБД: PostgreSQL
  • API-requests: Postman

API


Регистрация

Method - POST.

Route - "/api/auth/register".

Запрос:

{
    "username": "user",
    "email": "[email protected]",
    "password": "password",
    "userRole": "customer"
}

Вход

Method - POST.

Route - "/api/auth/login".

Запрос:

{
    "email": "[email protected]",
    "password": "password"
}

Получение информации о пользователе

Method - POST.

Route - "/api/auth/get_info".

Запрос:

{
    "username": "user"
}

Получение меню

Method - GET.

Route - "/api/dishes/menu".


Создание заказа

Method - POST.

Route - "/api/orders/create".

Запрос:

{
    "username": "user",
    "specialRequests": "some comments",
    "status": "pending"
}

Получение информации о заказе

Method - GET.

Route - "/api/orders/{id}".


Смена роли зарегистрированного пользователя [CHEF]

Method - POST.

Route - "/api/roles/change".

Запрос:

{
    "userRole": "manager",
    "username": "user"
}

Получение информации о блюде

Method - GET.

Route - "/api/dishes/{id}".


Создание блюда [MANAGER]

Method - POST.

Route - "/api/dishes/create".

Запрос:

{
    "name": "Dish",
    "description": "some comments",
    "price": 10000,
    "quantity": 10
}

Обновление информации о блюде [MANAGER]

Method - PUT.

Route - "/api/dishes/{id}".

Запрос:

{
    "name": "UpdatedDish",
    "description": "updated comments",
    "price": 999.76,
    "quantity": 10
}

Удаление блюда [MANAGER]

Method - DELETE.

Route - "/api/dishes/{id}".


Особенности реализации:

  • По обращению к "/api/orders/get" по номеру заказа пользователю выведется информация о заказе, однако в нем не будет списка блюд. Так сделано потому что в SQL-запросе из ТЗ для создания таблицы заказов не было указано поле, хранящее в себе список блюд в заказе. В любом случае, реализовать это нетрудно. Аналогичная ситуация и для "/api/orders/create" - создать заказ можно без учета блюд.
  • Для доступа у API помеченным меткой [MANAGER] или [CHEF] требуется указать в header области запроса JWT токен пользователя с соответствующей ролью.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.