C установленным python 3.5.10, django 2.2.10, djangorestframework 3.12.4 Склонировать, перейти в каталог проекта
Запустить python manage.py migrate
Запустить python manage.py createsuperuser , если нужно создать админа
Запустить python manage.py runserver 8000 для старта на localhost:8000
Авторизация пользователей производится через заголовок базовой авторизации. Если пользователь авторизован и в пользовательском функционале указано поле interviewee_id = 0, то опрос не будет анонимным, а будет использоваться авторизованная учетная запись.
GET /api/active_question_sets/ - получить список активных анкет. Возврат массив active_question_sets, состоящий из анкет с неистекшим сроком действия
POST /api/start_interview/ - начать интервью. Нужно передать {"question_set_id":код_анкеты,"interviewee_id":id_интервьюируемого}. Возврат: сериализованный объект интервью, состоящий из 'id', 'interviewee_id', 'loggedin_user', 'start_date', 'question_set'. Если interviewee_id указать 0, то будет использована авторизация Django и опрос не будет анонимным
GET /api/interview_questions/<id_интервью> - возвращает массив вопросов с вариантами ответов для прохождения опроса, зарегистрированного под id = <id_интервью>.
POST /api/register_answer/ - регистрирует ответ на вопрос. Нужно передать interview_id, question_id, answers. Пример передачи: { "interview_id": 2, "question_id": 1, "answers": ["Зеленый"] }
GET /api/user_interviews/<interviewee_id>/ - выводит список интервью с ответами по id интервьюируемого. Если interviewee_id указать 0, то будет использована авторизация Django и будут выведен список интервью текущего авторизованного пользователя. Этот пункт НЕДОДЕЛАН. И в каждом вопросе будут выведены ответы всех пользователей на этот вопрос, что будет являться верным выводом только при участии во всех опросах только одного пользователя и по одному интервью на каждый опрос.
Пример объекта Анкеты: {"id":2,"title":"Анкета №2","description":"Вторая анкета","start_date":"2021-08-16T07:14:34Z","end_date":null}
GET /api/question_set/ - получить список анкет. Возврат: массив сериализованных анкет.
GET /api/question_set/<id_анкеты>/ - получить данные конкретной анкеты с id = <id_анкеты>. Возврат: сериализованный объект анкеты.
POST /api/question_set/ - создать анкету. Пример передачи: { "title": "Анкета №2", "description": "Вторая анкета", "start_date": "2021-08-16T07:14:34Z", "end_date": null }. Пример возврата: {"id":2,"title":"Анкета №2","description":"Вторая анкета","start_date":"2021-08-16T07:14:34Z","end_date":null}
PUT /api/question_set/<id_анкеты>/ - изменить все поля конкретной анкеты с id = <id_анкеты>. Пример передачи: { "title": "Анкета №2", "description": "Вторая анкета", "start_date": "2021-08-16T07:14:34Z", "end_date": null } Пример возврата: {"id":2,"title":"Анкета №2","description":"Вторая анкета","start_date":"2021-08-16T07:14:34Z","end_date":null}
PATCH /api/question_set/<id_анкеты>/ - изменение указанных полей конкретной анкеты с id = <id_анкеты>. Пример передачи: { "description": "Вторая анкета, которую изменили" } Пример возврата: {"id":2,"title":"Анкета №2","description":"Вторая анкета, которую изменили","start_date":"2021-08-16T07:14:34Z","end_date":null}
DELETE /api/question_set/<id_анкеты>/ - удалить конкретную анкету с id = <id_анкеты>. Без передачи. Без возврата
Пример объекта Вопроса: {"id":9,"question_set":2,"question_text":"Кто ты?","answer_type":"ONEVARIANT","answer_variants":["человек","робот","животное"]} question_set - id анкеты, к которой принадлежит вопрос answer_type - тип вопроса ("ONEVARIANT","MULTIVARIANT","TEXT")
GET /api/question/ - получить список всех вопросов всех анкет в куче. Без передачи.
GET /api/question/<id_вопроса>/ - получить данные конкретного вопроса с id = <id_вопроса>. Возврат: сериализованный объект вопроса.
POST /api/question/ - создать анкету. Пример передачи: {"question_set":2,"question_text":"Кто ты?","answer_type":"ONEVARIANT","answer_variants":["человек","робот","животное"]}. Пример возврата: {"id":9,"question_set":2,"question_text":"Кто ты?","answer_type":"ONEVARIANT","answer_variants":["человек","робот","животное"]}
PUT /api/question/<id_вопроса>/ - изменить все поля конкретного вопроса с id = <id_вопроса >. Пример передачи: {"question_set":2,"question_text":"Кто ты биологически?","answer_type":"ONEVARIANT","answer_variants":["человек","рыба","растение"]}. Пример возврата: {"id":9,"question_set":2,"question_text":"Кто ты биологически?","answer_type":"ONEVARIANT","answer_variants":["человек","рыба","растение"]}
PATCH /api/question/<id_вопроса>/ - изменение указанных полей конкретного вопроса с id = <id_вопроса>. Пример передачи: { ,"question_text":"Кто ты биологически?" } Пример возврата: {"id":9,"question_set":2,"question_text":"Кто ты биологически?","answer_type":"ONEVARIANT","answer_variants":["человек","робот","животное"]}
DELETE /api/question/<id_вопроса>/ - удалить конкретный вопрос с id = <id_анкеты>. Без передачи. Без возврата.