О разделе
Здесь — практикум, который закрепляет навыки проектирования и реализации безопасных масштабируемых REST API и WebSocket-сервисов. Вы пройдёте путь от контракта до работающего кода на двух стеках и проверите интеграцию в Postman.
Песочница выше повторяет статусы 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 |
Теория по REST, маппингу и WebSocket — в 8.05 Микросервисы и интеграция; этот раздел — применение на практике.
Что понадобится
- Python 3.11+ и
pip - .NET SDK 8
- Postman или Newman для CLI
- Базовое знакомство с HTTP и JSON
Как учиться по разделу
- Пройдите интерактивный сценарий на этой странице (кнопка «Сквозной сценарий»).
- Прочитайте шаги 1–3 и зафиксируйте контракт на бумаге или в OpenAPI.
- Поднимите оба сервиса локально (4, 5) и сверьте ответы с песочницей.
- Закройте цикл в Postman и негативными кейсами из шага 8.
Связь с теорией
| Тема практикума | Статья в энциклопедии |
|---|---|
| REST, коды HTTP | REST |
| Проектирование и DTO | Проектирование API |
| WebSocket | Реактивные транспорты |
| Интеграционные тесты | 1012 |
Практикум — сценарий и архитектура 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 — о разделе
Сквозной маршрут: два интегрированных сервиса (Python и C#), контракт API, маппинг DTO, WebSocket-события, безопасность и проверка в Postman.