Необходимость в разработке сервиса опросов пользователей и API к нему.
-
База данных: PostgreSQL.
-
Фреймворк: Django-rest-framework.
-
WSGI: Gunicorn.
-
Веб-сервер: Nginx.
-
Развертывание: Docker-Compose.
Сервис предоставляет удобную административную панель, в которой совершать различные манипуляции с опросами.
Сервис содержит автоматически генерируемую документацию.
Изменить название example.env на .env, при необходимости внеся в него коррективы.
- Убедиться, что необходимые порты для работы проекта не заняты (8080 - nginx, 5433 - postgres, 8001 - django/gunicorn):
sudo netstat -tulpn | grep :<xxxx>
где xxxx
- номер порта.
- Если на данных портах запущены стандартные сервисы, их необходимо выключить:
sudo kill `sudo lsof -t i:<xxxx>`
- Создать docker-compose:
docker-compose build
- Запустить docker-compose:
docker-compose up -d
- Перейти по ссылке:
http://localhost:8080/
- Остановить и удалить 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