Модуль учёта заказов клиентов и заметок пользователей
Простой HTTP-сервис для управления заказами клиентов и заметками пользователей.
Структура
orders.py— основной модуль сервераrequirements.txt— зависимости проекта
Функционал
Хранение заказов
Заказы хранятся в памяти в словаре orders. Каждый заказ имеет:
id— уникальный идентификаторuser_id— владелец заказаamount— сумма заказа
Хранение заметок
Заметки хранятся в памяти в словаре notes. Каждая заметка имеет:
id— уникальный идентификаторuser_id— владелец заметкиtitle— заголовок заметкиcontent— содержимое заметкиcreated_at— время создания
Эндпоинты
GET /orders/{id}
Получение заказа по ID. Требует авторизации через заголовок Authorization: Bearer <token>.
Пример:
curl -H "Authorization: Bearer <your-token>" http://localhost:8000/orders/1
POST /orders/{id}
Изменение суммы заказа. Принимает JSON с полем amount в теле запроса.
Пример:
curl -X POST -H "Authorization: Bearer <your-token>" \
-H "Content-Type: application/json" \
-d '{"amount": 500}' \
http://localhost:8000/orders/1
GET /admin/backup
Проверка готовности эндпоинта бэкапа.
POST /admin/backup
Инициация бэкапа данных на удалённый хост. Принимает JSON с полем host в теле запроса.
Пример:
curl -X POST -H "Authorization: Bearer <your-token>" \
-H "Content-Type: application/json" \
-d '{"host": "backup.example.com"}' \
http://localhost:8000/admin/backup
Бэкап выполняется асинхронно через rsync. Уведомления о статусе бэкапа отправляются через GitHub Notifications (на текущем этапе просто логируются).
Эндпоинты заметок
POST /notes
Создание новой заметки. Требует авторизации через заголовок Authorization: Bearer <token>.
Пример:
curl -X POST -H "Authorization: Bearer token_create_note" \
-H "Content-Type: application/json" \
-d '{"title": "Моя заметка", "content": "Текст заметки"}' \
http://localhost:8000/notes
GET /notes/{id}
Получение заметки по ID. Требует авторизации. Доступна только для владельца заметки.
Пример:
curl -H "Authorization: Bearer token_read_note" \
http://localhost:8000/notes/1
GET /notes/export?path=...
Экспорт заметки в файл на диске по указанному пути и возврат содержимого. Требует авторизации.
Пример:
curl -H "Authorization: Bearer token_export_note" \
"http://localhost:8000/notes/export?path=/tmp/notes/note_1.txt"
POST /notes/{id}/share
Расшаривание заметки по email. Отправляет уведомление на внешний webhook-URL.
Пример:
curl -X POST -H "Authorization: Bearer token_share_note" \
-H "Content-Type: application/json" \
-d '{"email": "friend@example.com", "webhook_url": "https://example.com/webhook"}' \
http://localhost:8000/notes/1/share
Быстрый старт
-
Установите зависимости:
pip install -r requirements.txt -
Запустите сервер:
python orders.py -
Создайте заметку:
curl -X POST -H "Authorization: Bearer token_quickstart_create" \ -H "Content-Type: application/json" \ -d '{"title": "Первая заметка", "content": "Текст первой заметки"}' \ http://localhost:8000/notes -
Получите заметку по ID:
curl -H "Authorization: Bearer token_quickstart_read" \ http://localhost:8000/notes/1 -
Экспортируйте заметку в файл:
curl -H "Authorization: Bearer token_quickstart_export" \ "http://localhost:8000/notes/export?path=/tmp/my_note.txt" -
Расшарьте заметку:
curl -X POST -H "Authorization: Bearer token_quickstart_share" \ -H "Content-Type: application/json" \ -d '{"email": "friend@example.com", "webhook_url": "https://webhook.site/your-uuid"}' \ http://localhost:8000/notes/1/share
Запуск
pip install -r requirements.txt
python orders.py
Сервер запустится на localhost:8000.