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