Skip to content

Latest commit

 

History

History
66 lines (44 loc) · 3.42 KB

README.md

File metadata and controls

66 lines (44 loc) · 3.42 KB

Тестовое задание

Необходимо разработать проект на Python 3.7 с использованием следующих технологий:

  • setup.py с указанием зависимостей и выполняемых скриптов
  • (Желательно, но не обязательно) buildout.cfg для сборки проекта
  • Асинхронное программирование на базе asyncio
  • Стиль PEP 8
  • Unit-тесты с использованием pytest

На основе aiohttp написать JSON RESTful API сервер со следующими требованиями:

  • Работает самостоятельно, без использования WSGI
  • Желательно соответствие требованиям RESTful API касательно того как должен быть структурирован сам API
  • Возможность задавать параметры через командную строку

Задача сервера:

  • Через аргумент принимать порт на котором он должен работать
  • Через аргумент (к примеру, --folder /foo ) серверу будет указана доступная ему директория. В этой директории будут тестовые файлы в кодировке UTF-8
  • Названия файлов используют исключительно латинские буквы и цифры и имеют расширение .txt
  • Ресурс /notes должен представлять из себя коллекцию файлов в заданной директории

Должны быть доступны действия для этого ресурса:

  • POST /notes для создания нового текстового файла
  • GET /notes получить информацию по всем файлам
  • GET /notes/{filename} получить метаданные и содержимое файла, где filename - имя файла без .txt
  • DELETE /notes/{filename}

Для POST сервер должен принимать данные в формате JSON, для GET (включая GET /notes/{filename}) отдавать данные в формате JSON. Т.е. не возвращать просто содержимое файла

При создании файла через POST сервер должен сам сгенерировать имя новому файлу

Желательно покрыть данный функционал тестами

Структура проекта и использование патернов на свое усмотрение

Структура принимаемого и отдаваемого JSON - на свое усмотрение

Пример запроса и ожидаемого ответа*:

→ POST /notes

{
"content": "Hello, World!\n\nTest"
}

← 201 Created

{
"note_id": "123"
}

*Пример иллюстрирует механизм работы с API. Конкретное содержимое JSON, поля и прочее можно выбрать на свое усмотрение

Исходники выполненного задания можно выложить на Github, Gitlab, Bitbucket и т.д. или прислать архивом.