репозиторий для тестового задания
docker run -d -p 8000:8000 marcondream/pollapi:latest
по-умолчанию создается учетная запись администратора
login: admin
password: admin
примеры запросов в формате, поддерживаемом idea/pycharm можно найти в файле api.http
Для получения токена авторизации необходимо отправить запрос, содержащий json с логином и паролем POST http://localhost:8000/auth/token/login/
{
"username":"admin",
"password":"admin"
}
в ответ сервис отправит авторизационный токен. Для авторизации сервис использует заголовок Authorization Пример заголовка:
Authorization: Token 96836753d98b228f3f71f88102695be9097c777c
/polls/
GET - список активных опросов
POST - создание нового опроса, требует авторизации
{
"title": "test poll3",
"start_date": "2020-05-06T19:00:00",
"end_date": "2021-05-05T19:00:00"
}
/polls/:id/
GET - возвращает данные опроса с соответствующим id
PUT - обновляет опрос с соответствующим id, требует авторизации
DELETE - удаляет запрос с соответствующим id, требует авторизации
/questions/
GET - список всех вопросов
POST - создание нового вопроса
{
"poll": 1,
"text": "multiple_variant_question",
"question_type": "multiple"
}
poll - id опроса, для которого добавляется вопрос
text - текст вопроса
question_type - тип вопроса
тип вопроса может принимать следующие значения:
- text (ожидается ответ в виде текста)
- single (ожидается ответ в виде выбора одного из вариантов ответов)
- multiple (ожидается ответ в виде выбора одного и более вариантов ответов)
/questions/:id/
GET - возвращает вопрос с соответствующим id
PUT - обновляет вопрос с соответствующим id, требует авторизации
DELETE - удаляет вопрос с соответствующим id, требует авторизации
/variants/
GET - возвращает список вариантов ответов
POST - создает вариант ответа, требует авторизации
{
"question": 3,
"text": "variant 4"
}
question - id вопроса
text - текст варианта ответа
/answers/
POST - создает ответ на опрос
{
"poll": 1,
"participant_id": 10000,
"answers": [
{
"question": 1,
"text": "test"
},
{
"question": 2,
"variants": [2]
},
{
"question": 3,
"answer_variant": null,
"variants": [5,6]
}
]
}
poll - id опроса
participant_id - уникальный ID пользователя, проходящего опрос
answers - массив ответов на вопросы
ответ на вопросы содержит следующие поля:
question - id вопроса
text - текст ответа
variants - массив с id выбранных вариантов ответа
/answers/:participantId/ GET - детализация пройденных опросов пользователя с id participantId