О разделе
Длинные листинги (от ~15 строк) вынесены в каталог code.spirzen.ru и подгружаются в статьях через ExternalCodeEmbed — FastAPI, ASP.NET Core, OpenAPI и DTO не раздувают HTML энциклопедии. Короткие фрагменты (JSON-схемы, curl, команды запуска) по-прежнему прямо в markdown. Диаграммы mermaid и интерактив — на месте или в play.spirzen.ru.
Здесь — практикум, который закрепляет навыки проектирования и реализации безопасных масштабируемых REST API и WebSocket-сервисов. Вы пройдёте путь от контракта до работающего кода на двух стеках и проверите интеграцию в Postman.
Play ITЗагрузка интерактивного демо…
Песочница выше повторяет статусы 201, 409, 502 и события WebSocket без установки Python и .NET. Локальный код из шагов 4–5 даёт тот же контракт на реальных портах 8100 и 5200.
Сценарий
Два сервиса учебной системы OrderDesk:
| Сервис | Стек | Порт (локально) | Роль |
|---|---|---|---|
| catalog-api | Python, FastAPI | 8100 | Каталог товаров, остатки, резервирование |
| orders-api | C#, ASP.NET Core 8 | 5200 | Заказы, вызов каталога по REST, WebSocket для клиентов |
Синхронная связь — HTTP/JSON по версионированному контракту /api/v1/…. События для браузера и Postman — WebSocket на стороне orders-api. Межсервисные вызовы защищены API-ключом; для внешних клиентов — JWT.
Маршрут по шагам
| Шаг | Статья | Содержание |
|---|---|---|
| 1 | Сценарий и архитектура | Цели, диаграмма потоков, границы ответственности |
| 2 | Проектирование контракта API | Ресурсы, методы HTTP, коды ответов, OpenAPI |
| 3 | Модели данных и маппинг | Домен, DTO, соглашения JSON, версии полей |
| 4 | Сервис каталога на Python | FastAPI, SQLite, эндпоинты резерва (практика SQLite) |
| 5 | Сервис заказов на C# | Minimal API, HttpClient, сохранение заказов |
| 6 | Безопасность и устойчивость | JWT, API-ключ, таймауты, идемпотентность |
| 7 | WebSocket и события | Протокол сообщений, heartbeat, рассылка |
| 8 | Проверка в Postman | Коллекция, окружение, сценарий E2E |
Проксирование WebSocket через nginx (Upgrade, Connection) — Nginx — конфиги под задачу.
Теория по REST, маппингу и WebSocket — в 8.05 Микросервисы и интеграция; этот раздел — применение на практике.
Что понадобится
- Python 3.11+ и
pip - .NET SDK 8
- Postman или Newman для CLI
- На JVM (Groovy/Java) — опционально Практикум — API-тестер на Groovy как альтернатива Postman с embedded JMeter
- Базовое знакомство с HTTP и JSON
- Базовая работа с утилитой curl, curl / fetch — примеры для проверки ручек вне Postman; клиентский JavaScript — Fetch / axios — типовые запросы
Как учиться по разделу
- Пройдите интерактивный сценарий на этой странице (кнопка "Сквозной сценарий").
- Прочитайте шаги 1–3 и зафиксируйте контракт на бумаге или в OpenAPI.
- Поднимите оба сервиса локально (Практикум — сервис каталога на Python, Практикум — сервис заказов на C#) и сверьте ответы с песочницей.
- Закройте цикл в Postman и негативными кейсами из шага 8.
Связь с теорией
| Тема практикума | Статья в энциклопедии |
|---|---|
| REST, коды HTTP | REST |
| Проектирование и DTO | Проектирование API |
| WebSocket | Реактивные транспорты |
| Polling, SSE, webhook | Polling, Long Polling, SSE и Webhook, Push, Pull, Webhooks |
| Интеграционные тесты | Проверка взаимодействия компонентов |
Практикум — сценарий и архитектура OrderDesk
Два сервиса OrderDesk: каталог на Python и заказы на C#, границы ответственности, потоки REST и WebSocket.
Практикум — проектирование контракта API
Ресурсы OrderDesk, таблица методов HTTP, коды ответов и фрагмент OpenAPI для catalog-api и orders-api.
Практикум — модели данных и маппинг DTO
Доменные сущности OrderDesk, DTO для REST, маппинг Python (Pydantic) и C# (record + ручной маппер).
Практикум — сервис каталога на Python
FastAPI, SQLite, эндпоинты товаров и резервирования, Pydantic и проверка через uvicorn.
Практикум — сервис заказов на C#
ASP.NET Core 8, Minimal API, HttpClient к catalog-api, SQLite и создание заказа с резервом.
Практикум — безопасность и устойчивость
JWT, API-ключ между сервисами, HTTPS, таймауты, идемпотентность и заголовок X-Request-Id в OrderDesk.
Практикум — WebSocket и события заказов
Протокол JSON-сообщений, hub в ASP.NET Core, heartbeat и подписка клиента на статусы OrderDesk.
Практикум — проверка в Postman
Коллекция Postman, переменные окружения и сквозной сценарий OrderDesk — товар, заказ, WebSocket.
Практикум REST и WebSocket — итоги
Краткое резюме раздела 8.08 — OrderDesk, catalog-api, orders-api, JWT, API-ключ, WebSocket и типичные сбои практикума.
Практикум REST и WebSocket — чек-лист самопроверки
Вопросы для закрепления практикума OrderDesk — catalog-api, orders-api, JWT, API-ключ, WebSocket и Postman.
Практикум REST и WebSocket — о разделе
Сквозной маршрут: два интегрированных сервиса (Python и C#), контракт API, маппинг DTO, WebSocket-события, безопасность и проверка в Postman.