Система должна представлять следующие HTTP-хендлеры:
-
GET /api/users- список пользователей -
POST /api/users- регистрация пользователя -
GET /api/users/{user_id}- профиль пользователя -
GET /api/users/me- текущий пользователь -
POST /api/users/set_password- изменение пароля -
POST /api/token/login- получить токен авторизации -
POST /api/token/logout- удаление токена авторизации -
GET /api/tags- список тегов -
GET /api/tags/{tag_id}- получение тега -
POST /api/tags- создание тега -
PATCH /api/tags/{tag_id}- изменение тега -
DELETE /api/tags/{tag_id}- удаление тега -
GET /api/recipes- список рецептов -
POST /api/recipes- создание рецепта -
GET /api/recipes/{recipe_id}- получение рецепта -
PATCH /api/recipes/{recipe_id}- обновление рецепта -
DELETE /api/recipes/{recipe_id}- удаление рецепта -
GET /api/recipes/download_shopping_cart- скачать список покупок -
POST /api/recipes/{recipe_id}/favorite- добавить рецепт в избранное -
POST /api/recipes/{recipe_id}/shopping_cart- добавить рецепт в список покупок -
DELETE /api/recipes/{recipe_id}/favorite- удалить рецепт из избранного -
DELETE /api/recipes/{recipe_id}/shopping_cart- удалить рецепт из списка покупок -
GET /api/users/subscriptions- мои подписки -
POST /api/users/{user_id}/subscribe- подписаться на пользователя -
DELETE /api/users/{user_id}/subscribe- отписаться от пользователя -
GET /api/ingredients- список ингредиентов -
POST /api/ingredients- создание ингредиента -
GET /api/ingredients/{ingredient_id}- получение ингредиента -
PATCH /api/ingredients/{ingredient_id}- обновление ингредиента -
DELETE /api/ingredients/{ingredients_id}- удаление ингредиента
Хендлер: GET /api/users.
Хендлер доступен всем типам пользователей
Query параметры:
page- номер страницы.limit- количество объектов на странице.
Возможные коды ответа:
200: Возвращает json-объект в следующем формате:{ "count": 123, "next": "https://hellchicken.ru/api/users?page=4", "previous": "https://hellchicken.ru/api/users?page=2", "results": [ { "id": "8895202b-9900-4e6d-91e0-1320748f6165", "email": "admin@hellchicken.ru", "username": "admin", "first_name": "Василий", "last_name": "Пупкин", "is_subscribed": false } ] }400- неверный формат запроса;500- внутренняя ошибка сервера;
Хендлер: POST /api/users
Хендлер доступен всем типам пользователей.
Для создания пользователя необходимы следующие данные: email, имя пользователя,
имя, фамилия, пароль.
Формат запроса:
{
"email": "vpupkin@yandex.ru",
"username": "vasya.pupkin",
"first_name": "Вася",
"last_name": "Пупкин",
"password": "Qwerty123"
}Возможные коды ответа:
201- профиль создан: Формат ответа:{ "id": "8895202b-9900-4e6d-91e0-1320748f6165", "email": "vpupkin@yandex.ru", "username": "vasya.pupkin", "first_name": "Вася", "last_name": "Пупкин", "password": "Qwerty123" }400- неверный формат запроса;500- внутренняя ошибка сервера;
Хендлер: GET /api/users/{user_id}
Хендлер доступен без авторизации. Path параметры:
user_id- уникальный идентификатор пользователя.
Возможные коды ответа:
200- пользователь найден: Формат ответа:{ "id": "8895202b-9900-4e6d-91e0-1320748f6165", "email": "vpupkin@yandex.ru", "username": "vasya.pupkin", "first_name": "Вася", "last_name": "Пупкин", "is_subscribed": false }404- пользователь не найден;500- внутренняя ошибка сервера;
Хендлер: GET /api/users/me
Хендлер доступен только аутентифицированным пользователям.
Возможные коды ответа:
200- ОК: Формат ответа:{ "id": "8895202b-9900-4e6d-91e0-1320748f6165", "email": "vpupkin@yandex.ru", "username": "vasya.pupkin", "first_name": "Вася", "last_name": "Пупкин", "is_subscribed": false }401- пользователь не аутентифицирован;500- внутренняя ошибка сервера;
Хендлер: POST /api/users/set_password
Хендлер доступен только аутентифицированным пользователям.
Для изменения пароля необходимы следующие данные: старый пароль, новый пароль.
Данные необходимо передать в следующем формате:
{
"new_password": "strong_password",
"current_password": "Querty123"
}Возможные коды ответа:
204- пароль успешно изменен;400- неверный формат запроса;401- пользователь не аутентифицирован;500- внутренняя ошибка сервера;
Хендлер: POST /api/token/login
Аутентификация происходит по паре почта, пароль. После успешной
аутентификации хендлер создает токен, который можно использовать в дальнейшем при
запросах.
Формат запроса:
{
"email": "vpupkin@yandex.ru",
"password": "strong_password"
}Возможные коды ответа:
201- создан токен: Формат ответа:{ "auth_token": "some token string" }401- пользователь не аутентифицирован;500- внутренняя ошибка сервера;
Хендлер: POST /api/token/logout
Для удаления, токен
Возможные коды ответа:
200- ОК401- пользователь не аутентифицирован;500- внутренняя ошибка сервера;
Хендлер: GET /api/tags
Возможные коды ответа:
200- ОК401- пользователь не аутентифицирован;500- внутренняя ошибка сервера;
Хендлер: GET /api/tags/{tag_id}
Возможные коды ответа:
200- ОК401- пользователь не аутентифицирован;500- внутренняя ошибка сервера;
Хендлер: POST /api/tags
Возможные коды ответа:
200- ОК401- пользователь не аутентифицирован;500- внутренняя ошибка сервера;
Хендлер: PATCH /api/tags/{tag_id}
Возможные коды ответа:
200- ОК401- пользователь не аутентифицирован;500- внутренняя ошибка сервера;
Хендлер: DELETE /api/tags/{tag_id}
Возможные коды ответа:
200- ОК401- пользователь не аутентифицирован;500- внутренняя ошибка сервера;
Хендлер: GET /api/recipes
Возможные коды ответа:
200- ОК401- пользователь не аутентифицирован;500- внутренняя ошибка сервера;
Хендлер: POST /api/recipes
Возможные коды ответа:
200- ОК401- пользователь не аутентифицирован;500- внутренняя ошибка сервера;
Хендлер: GET /api/recipes/{recipe_id}
Возможные коды ответа:
200- ОК401- пользователь не аутентифицирован;500- внутренняя ошибка сервера;
Хендлер: PATCH /api/recipes/{recipe_id}
Возможные коды ответа:
200- ОК401- пользователь не аутентифицирован;500- внутренняя ошибка сервера;
Хендлер: DELETE /api/recipes/{recipe_id}
Возможные коды ответа:
200- ОК401- пользователь не аутентифицирован;500- внутренняя ошибка сервера;
Хендлер: GET /api/recipes/download_shopping_cart
Возможные коды ответа:
200- ОК401- пользователь не аутентифицирован;500- внутренняя ошибка сервера;
Хендлер: POST /api/recipes/{recipe_id}/favorite
Возможные коды ответа:
200- ОК401- пользователь не аутентифицирован;500- внутренняя ошибка сервера;
Хендлер: POST /api/recipes/{recipe_id}/shopping_cart
Возможные коды ответа:
200- ОК401- пользователь не аутентифицирован;500- внутренняя ошибка сервера;
Хендлер: DELETE /api/recipes/{recipe_id}/favorite
Возможные коды ответа:
200- ОК401- пользователь не аутентифицирован;500- внутренняя ошибка сервера;
Хендлер: DELETE /api/recipes/{recipe_id}/shopping_cart
Возможные коды ответа:
200- ОК401- пользователь не аутентифицирован;500- внутренняя ошибка сервера;
Хендлер: GET /api/users/subscriptions
Возможные коды ответа:
200- ОК401- пользователь не аутентифицирован;500- внутренняя ошибка сервера;
Хендлер: POST /api/users/{user_id}/subscribe
Возможные коды ответа:
200- ОК401- пользователь не аутентифицирован;500- внутренняя ошибка сервера;
Хендлер: DELETE /api/users/{user_id}/subscribe
Возможные коды ответа:
200- ОК401- пользователь не аутентифицирован;500- внутренняя ошибка сервера;
Хендлер: GET /api/ingredients
Возможные коды ответа:
200- ОК401- пользователь не аутентифицирован;500- внутренняя ошибка сервера;
Хендлер: POST /api/ingredients
Возможные коды ответа:
200- ОК401- пользователь не аутентифицирован;500- внутренняя ошибка сервера;
Хендлер: GET /api/ingredients/{ingredient_id}
Возможные коды ответа:
200- ОК401- пользователь не аутентифицирован;500- внутренняя ошибка сервера;
Хендлер: PATCH /api/ingredients/{ingredient_id}
Возможные коды ответа:
200- ОК401- пользователь не аутентифицирован;500- внутренняя ошибка сервера;
Хендлер: DELETE /api/ingredients/{ingredients_id}
Возможные коды ответа:
200- ОК401- пользователь не аутентифицирован;500- внутренняя ошибка сервера;