Skip to content

anurmanov/counter_project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Описание задания

Требуется реализовать бекенд-сервер со следующими методами:

HTTP-метод | URI | Тело запроса | Ответ

POST | /count | пустое | строка 'ok'

GET | /count | пустое | текущее значение счетчика (только число)

DELETE | /count | пустое | строка 'ok'

POST | /login | json с логином и паролем | строка 'ok'

Логика работы следующая: каждый пользователь может по POST /login пройти авторизацию и ему становятся доступны методы POST, GET, DELETE /count. По GET /count пользователь может узнать текущее значение счетчика (начинает с 0), по POST добавить 1 ко значению, по DELETE вычесть 1 из значения. У каждого пользователя свой счетчик.

Описание решения

Проект написан на django с использованием базы данных PostgreSQL в качестве хранилища. Деплоится через docker-compose up. Аутентификация на основе JSON Web Token с использованием библиотеки djangorestframework-simplejwt

После запуска приложения надо зайти в контейнер службы web и создать суперользователя для того чтобы зайти в админку и добавить остальных пользователей:

docker exec -it counter_project_web_1 sh

python manage.py createsuperuser

Use cases:

  1. Аутентификация в системе: Запрос - curl -X POST -H "Content-Type: application/json" -d '{"username": "username", "password": "password"}' http://127.0.0.1:8001/login/ В ответ получаем token, который нужен для доступа к защенным методам эндпоинта /count.

  2. Запросить значение счетчика: Запрос - curl -X GET -H "Authorization: Bearer token" http://127.0.0.1:8001/count/

  3. Увеличить значение счетчика на 1: Запрос - curl -X POST -H "Authorization: Bearer token" http://127.0.0.1:8001/count/

  4. Уменьшить значение счетчика на 1: Запрос - curl -X DELETE -H "Authorization: Bearer token" http://127.0.0.1:8001/count/

Прочее

  • pytest.env - пример файла с переменными среды для тестирования в pytest.
  • dev.env - пример файла с переменными среды для разработки.
  • set_env_vars.sh - Linux-скрипт для установки переменных среды из файла dev.env

About

test project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published