Controllers - gro1vy/DeliverServiceAPI GitHub Wiki

Controllers

Для сервиса доставки еды были реализованный API контроллеры, каждый из которых имеет определенную роль в данном сервисе доставки.

Здесь будет кратко представлено описание каждого контроллера с его методами.

AccountController

Данный контроллер был создан в целях поддержки пользовательских аккаунтов, с помощью которых пользователь может иметь возможность хранить личные данные и получать доступ к методам требующих авторизации.

Register

Данный метод необходим для создания пользовательского аккаунта, чтобы потом иметь доступ к основному функционалу сервиса доставок, а именно создание заказов.

Запросы:

  • Доступ осуществляется по адресу POST /api/account/register.
  • Через тело запроса принимает модель RegistrationRequestDTO.

Ответы:

  • Вернет модель TokenResponseDTO с кодом 200, если регистрация прошла успешно.
  • Вернет модель HttpValidationProblemDetails с кодом 400, если была допущена ошибка в данных.
  • Вернет модель ResponseDTO с кодом 500, если на сервере произошла непредвиденная ошибка.

Login

Данный метод необходим для входа в уже существующий аккаунт.

Запросы:

  • Доступ осуществляется по адресу POST /api/account/login.
  • Через тело запроса принимает модель LoginRequestDTO.

Ответы:

  • Вернет модель TokenResponseDTO с кодом 200, если вход прошел успешно.
  • Вернет модель HttpValidationProblemDetails с кодом 400, если была допущена ошибка в данных.
  • Вернет модель ResponseDTO с кодом 404, если пользователь с таким паролем и почтой не найден.
  • Вернет модель ResponseDTO с кодом 500, если на сервере произошла непредвиденная ошибка.

LogoutAll

Данный метод необходим для того, чтобы выйти из всех текущих сессий, например, на разных устройствах.

Запросы:

  • Доступ осуществляется по адресу POST /api/account/logoutall.
  • Для доступа к методу необходимо в header запроса указать JWT токен, выданный при регистрации или входа в существующий аккаунт.

Ответы:

  • Вернет модель ResponseDTO с кодом 200, если выход из всех сессий прошел успешно.
  • Вернет код 401, если не указан JWT токен или токен больше не валиден по времени.
  • Вернет код 403, если токен больше не валиден по причине не связанности с refresh токеном.
  • Вернет модель ResponseDTO с кодом 500, если на сервере произошла непредвиденная ошибка.

LogoutCurrent

Данный метод необходим для того, чтобы выйти из текущей сессии, например, только на текущем устройстве.

Запросы:

  • Доступ осуществляется по адресу POST /api/account/logoutcurrent.
  • Для доступа к методу необходимо в header запроса указать JWT токен, выданный при регистрации или входа в существующий аккаунт.

Ответы:

  • Вернет модель ResponseDTO с кодом 200, если выход из текущей сессии прошел успешно.
  • Вернет код 401, если не указан JWT токен или токен больше не валиден по времени.
  • Вернет код 403, если токен больше не валиден по причине не связанности с refresh токеном. Вернет модель ResponseDTO с кодом 500, если на сервере произошла непредвиденная ошибка.

Refresh

Данный метод необходим для обновления access токена с протекшим временем жизни, и только таким. Несвязанные access токены с refresh токенами нельзя обновить.

Запросы:

  • Доступ осуществляется по адресу POST /api/account/refresh.
  • Для доступа к методу необходимо в header запроса указать JWT токен, выданный при регистрации или входа в существующий аккаунт.
  • Через тело запроса принимает модель RefreshDTO.

Ответы:

  • Вернет модель TokenResponseDTO с кодом 200, если обновление прошло успешно.
  • Вернет код 401, если access токен не валиден, либо не связан с refresh токеном, либо refresh токен не найден.
  • Вернет модель ResponseDTO с кодом 500, если на сервере произошла непредвиденная ошибка.

GetUserInfo

Данный метод необходим для просмотра текущей информации о пользователе.

Запросы:

  • Доступ осуществляется по адресу GET /api/account/profile.
  • Для доступа к методу необходимо в header запроса указать JWT токен, выданный при регистрации или входа в существующий аккаунт.

Ответы:

  • Вернет модель UserResponseDTO с кодом 200, если информация получена успешно.
  • Вернет код 401, если не указан JWT токен или токен больше не валиден по времени.
  • Вернет код 403, если токен больше не валиден по причине не связанности с refresh токеном.
  • Вернет модель ResponseDTO с кодом 500, если на сервере произошла непредвиденная ошибка.

EditUserInfo

Данный метод необходим для изменения информации о пользователе.

Запросы:

  • Доступ осуществляется по адресу PUT /api/account/profile.
  • Для доступа к методу необходимо в header запроса указать JWT токен, выданный при регистрации или входа в существующий аккаунт.
  • Через тело запроса принимает модель UserEditRequestDTO.

Ответы:

  • Вернет модель UserResponseDTO с кодом 200, если информация получена успешно.
  • Вернет модель HttpValidationProblemDetails с кодом 400, если была допущена ошибка в данных.
  • Вернет код 401, если не указан JWT токен или токен больше не валиден по времени.
  • Вернет код 403, если токен больше не валиден по причине не связанности с refresh токеном.
  • Вернет модель ResponseDTO с кодом 500, если на сервере произошла непредвиденная ошибка.

AddressController

GetAddress

Данный метод необходим для поиска детей родительского элемента в дереве адресных элементов.

Запросы:

  • Доступ осуществляется по адресу GET /api/account/search.
  • Через query принимает int parentObjectId (id родительского элемента) и string query (название нужного элемента).

Ответы:

  • Вернет список моделей SearchAddressDTO с кодом 200, если информация получена успешно.
  • Вернет модель ResponseDTO с кодом 500, если на сервере произошла непредвиденная ошибка.

GetAddressChain

Данный метод необходим для получения цепочки адресных элементов от корня до указанного элемента.

Запросы:

  • Доступ осуществляется по адресу GET /api/account/getaddresschain.
  • Через query принимает Guid ObjectGuid (id последнего элемента цепочки).

Ответы:

  • Вернет список моделей SearchAddressDTO с кодом 200, если информация получена успешно.
  • Вернет модель ResponseDTO с кодом 404, если указанный элемент не найден.
  • Вернет модель ResponseDTO с кодом 500, если на сервере произошла непредвиденная ошибка.

BasketController

GetDishInBasket

Данный метод необходим для получения блюд в корзине пользователя.

Запросы:

  • Доступ осуществляется по адресу GET /api/basket.
  • Для доступа к методу необходимо в header запроса указать JWT токен, выданный при регистрации или входа в существующий аккаунт.

Ответы:

  • Вернет список моделей DishBasketDTO с кодом 200, если информация получена успешно.
  • Вернет код 401, если не указан JWT токен или токен больше не валиден по времени.
  • Вернет код 403, если токен больше не валиден по причине не связанности с refresh токеном.
  • Вернет модель ResponseDTO с кодом 500, если на сервере произошла непредвиденная ошибка.

PutDishInBasket

Данный метод необходим для добавления блюда в корзину пользователя.

Запросы:

  • Доступ осуществляется по адресу POST /api/basket/{dishId}.
  • Для доступа к методу необходимо в header запроса указать JWT токен, выданный при регистрации или входа в существующий аккаунт.
  • Через path принимает Guid dishId блюда.

Ответы:

  • Вернет код 200, если добавление прошло успешно.
  • Вернет код 401, если не указан JWT токен или токен больше не валиден по времени.
  • Вернет код 403, если токен больше не валиден по причине не связанности с refresh токеном.
  • Вернет модель ResponseDTO с кодом 404, если указанное блюдо не найден.
  • Вернет модель ResponseDTO с кодом 500, если на сервере произошла непредвиденная ошибка.

DeletDishFromBasket

Данный метод необходим для удаления блюда из корзины пользователя.

Запросы:

  • Доступ осуществляется по адресу DELETE /api/basket/{dishId}.
  • Для доступа к методу необходимо в header запроса указать JWT токен, выданный при регистрации или входа в существующий аккаунт.
  • Через path принимает Guid dishId блюда и bool increase (нужно ли удалить все блюда данного типа).

Ответы:

  • Вернет код 200, если удаление прошло успешно.
  • Вернет код 401, если не указан JWT токен или токен больше не валиден по времени.
  • Вернет код 403, если токен больше не валиден по причине не связанности с refresh токеном.
  • Вернет модель ResponseDTO с кодом 404, если указанное блюдо не найден.
  • Вернет модель ResponseDTO с кодом 500, если на сервере произошла непредвиденная ошибка.

DishController

GetDishesAsync

Данный метод необходим для получения блюд, которые доставляет сервис.

Запросы:

  • Доступ осуществляется по адресу GET /api/dish.
  • Через query принимает catrgory, bool isVegetarian, dishSorting, int page.

Ответы:

  • Вернет модель DishPageListDTO с кодом 200, если информация получена успешно.
  • Вернет модель ResponseDTO с кодом 400, если была допущена ошибка в данных.
  • Вернет модель ResponseDTO с кодом 500, если на сервере произошла непредвиденная ошибка.

GetDishInfoAsync

Данный метод необходим для получения информации о блюде

Запросы:

  • Доступ осуществляется по адресу GET /api/dish/{id}.
  • Через query принимает Guid id блюда.

Ответы:

  • Вернет модель DishDTO с кодом 200, если информация получена успешно.
  • Вернет модель ResponseDTO с кодом 404, если указанное блюдо не найден.
  • Вернет модель ResponseDTO с кодом 500, если на сервере произошла непредвиденная ошибка.

CheckSetRating

Данный метод необходим для проверки на то, может ли пользователь поставить оценку.

Запросы:

  • Доступ осуществляется по адресу GET /api/dish/{id}/rating/check.
  • Для доступа к методу необходимо в header запроса указать JWT токен, выданный при регистрации или входа в существующий аккаунт.
  • Через query принимает Guid id блюда.

Ответы:

  • Вернет bool с кодом 200, если информация получена успешно.
  • Вернет код 401, если не указан JWT токен или токен больше не валиден по времени.
  • Вернет код 403, если токен больше не валиден по причине не связанности с refresh токеном.
  • Вернет модель ResponseDTO с кодом 404, если указанное блюдо не найден.
  • Вернет модель ResponseDTO с кодом 500, если на сервере произошла непредвиденная ошибка.

SetRating

Данный метод необходим для того, чтобы пользователь мог поставить оценку заказанному блюду.

Запросы:

  • Доступ осуществляется по адресу POST /api/dish/{id}/rating.
  • Для доступа к методу необходимо в header запроса указать JWT токен, выданный при регистрации или входа в существующий аккаунт.
  • Через query принимает Guid id блюда и int value значение оценки.

Ответы:

  • Вернет DishDTO с кодом 200, если информация обновлена успешно.
  • Вернет код 401, если не указан JWT токен или токен больше не валиден по времени.
  • Вернет код 403, если токен больше не валиден по причине не связанности с refresh токеном.
  • Вернет модель ResponseDTO с кодом 404, если указанное блюдо не найден.
  • Вернет модель ResponseDTO с кодом 500, если на сервере произошла непредвиденная ошибка.

OrderController

GetOrderInfo

Данный метод необходим получения информации от заказе.

Запросы:

  • Доступ осуществляется по адресу GET /api/order/{id}.
  • Для доступа к методу необходимо в header запроса указать JWT токен, выданный при регистрации или входа в существующий аккаунт.
  • Через path принимает Guid id заказа.

Ответы:

  • Вернет OrderInfoDTO с кодом 200, если информация получена успешно.
  • Вернет код 401, если не указан JWT токен или токен больше не валиден по времени.
  • Вернет код 403, если токен больше не валиден по причине не связанности с refresh токеном.
  • Вернет модель ResponseDTO с кодом 404, если указанный заказ не найден.
  • Вернет модель ResponseDTO с кодом 500, если на сервере произошла непредвиденная ошибка.

GetListOrderInfo

Данный метод необходим получения информации о всех заказа пользователя.

Запросы:

  • Доступ осуществляется по адресу GET /api/order.
  • Для доступа к методу необходимо в header запроса указать JWT токен, выданный при регистрации или входа в существующий аккаунт.

Ответы:

  • Вернет список моделей OrderInfoDTO с кодом 200, если информация получена успешно.
  • Вернет код 401, если не указан JWT токен или токен больше не валиден по времени.
  • Вернет код 403, если токен больше не валиден по причине не связанности с refresh токеном.
  • Вернет модель ResponseDTO с кодом 500, если на сервере произошла непредвиденная ошибка.

CreatOrderFromBasket

Данный метод необходим создания заказа из текущей корзины пользователя.

Запросы:

  • Доступ осуществляется по адресу POST /api/order.
  • Для доступа к методу необходимо в header запроса указать JWT токен, выданный при регистрации или входа в существующий аккаунт.
  • Принимает через тело запроса модель OrderCreateDTO.

Ответы:

  • Вернет код 200, если заказ создан успешно.
  • Вернет код 401, если не указан JWT токен или токен больше не валиден по времени.
  • Вернет код 403, если токен больше не валиден по причине не связанности с refresh токеном.
  • Вернет модель ResponseDTO с кодом 500, если на сервере произошла непредвиденная ошибка.

ConfirmOrderDelivery

Данный метод необходим создания для подтверждения заказа.

Запросы:

  • Доступ осуществляется по адресу POST /api/order/{id}/status.
  • Для доступа к методу необходимо в header запроса указать JWT токен, выданный при регистрации или входа в существующий аккаунт.
  • Через path принимает Guid id заказа.

Ответы:

  • Вернет код 200, если заказ обновлен успешно.
  • Вернет код 401, если не указан JWT токен или токен больше не валиден по времени.
  • Вернет код 403, если токен больше не валиден по причине не связанности с refresh токеном.
  • Вернет модель ResponseDTO с кодом 404, если указанный заказ не найден.
  • Вернет модель ResponseDTO с кодом 500, если на сервере произошла непредвиденная ошибка.