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, если на сервере произошла непредвиденная ошибка.