Skip to content

API сервис написанный на Django REST

Notifications You must be signed in to change notification settings

coldcloudgold/DRF-API-3

Repository files navigation

API

Суть проекта:

Необходимость в разработке сервиса опросов пользователей и API к нему.

Стек:

  1. База данных: PostgreSQL.

  2. Фреймворк: Django-rest-framework.

  3. WSGI: Gunicorn.

  4. Веб-сервер: Nginx.

  5. Развертывание: Docker-Compose.

Пример работы API:

Регистрация пользователя и создание JWT (+анонимный пользователь):

alt

Получение актуальных опросов:

alt

Получение актуальных опросов, вопросов и ответов (для пользователей):

alt

Поулчение всех опросов и вопросов (для администраторов):

alt

Поулчение всех опросов, вопросов и ответов (для администраторов):

alt

Поулчение всех опросов, вопросов и только правильных ответов (для администраторов):

alt

Создание ответа на вопрос (акутальность предачи идентификатора пользователя):

alt

Создание ответа на вопрос (акутальность предачи идентификаторов опроса и вопроса):

alt

Получение пройденных опросов с ответами на вопросы по указанному идентификатору:

alt

Изменение ответа на вопрос:

alt

Административное управление сервисом:

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

alt

Документация API:

Сервис содержит автоматически генерируемую документацию.

alt

Запуск проекта:

Изменить название example.env на .env, при необходимости внеся в него коррективы.

  1. Убедиться, что необходимые порты для работы проекта не заняты (8080 - nginx, 5433 - postgres, 8001 - django/gunicorn):

sudo netstat -tulpn | grep :<xxxx>

где xxxx - номер порта.

  1. Если на данных портах запущены стандартные сервисы, их необходимо выключить:

sudo kill `sudo lsof -t i:<xxxx>`

  1. Создать docker-compose:

docker-compose build

  1. Запустить docker-compose:

docker-compose up -d

  1. Перейти по ссылке:

http://localhost:8080/

  1. Остановить и удалить docker-compose:

docker-compose down -v

Эндпоинты и методы:

Эндпоинты:

/swagger/
/api/v1/actually_polls/{<pk>}
/api/v1/actually_polls_questions_answers/{<pk>}
/api/v1/all_polls_questions/{<pk>}
/api/v1/polls_questions_answers_admin/{<pk>}
/api/v1/polls_questions_answers_right/{<pk>}
/api/v1/user_answer/<id_user>/<id_poll>/<id_question>/
/api/v1/user_answers/<id_user>/

Методы:

GET

Ссылка Значение
/swagger/ Получение API проекта
/api/v1/actually_polls/{<pk>} Получение актульных опросов
/api/v1/actually_polls_questions_answers/{<pk>} Получение актульных опросов, вопросов и ответов
/api/v1/all_polls_questions/{<pk>} Получение всех опросв и вопросов
/api/v1/polls_questions_answers_admin/{<pk>} Получение актульных опросов, вопросов и ответов
/api/v1/polls_questions_answers_right/{<pk>} Поулчение всех опросов, вопросов и только правильных ответов
/api/v1/user_answers/<id_user>/ Получение пройденных опросов с ответами на вопросы

POST

Ссылка Значение
/api/v1/user_answer/<id_user>/<id_poll>/<id_question>/ Создание ответа на вопрос *

* - Пример тела запроса:

{
    "text": "Ответ на вопрос"
}

Полезное:

Зайти в панель администратора (пользователь подгружается из фикстур):

Name: admin
Password: admin

About

API сервис написанный на Django REST

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published