/poll-api

Primary LanguagePython

poll-api

репозиторий для тестового задания

запуск приложения в docker

docker run -d -p 8000:8000 marcondream/pollapi:latest

по-умолчанию создается учетная запись администратора

login: admin

password: admin

документация api

примеры запросов в формате, поддерживаемом 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