Перейти к основному содержимому

О разделе

Длинные листинги (от ~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-apiPython, FastAPI8100Каталог товаров, остатки, резервирование
orders-apiC#, ASP.NET Core 85200Заказы, вызов каталога по REST, WebSocket для клиентов

Синхронная связь — HTTP/JSON по версионированному контракту /api/v1/…. События для браузера и Postman — WebSocket на стороне orders-api. Межсервисные вызовы защищены API-ключом; для внешних клиентов — JWT.


Маршрут по шагам

ШагСтатьяСодержание
1Сценарий и архитектураЦели, диаграмма потоков, границы ответственности
2Проектирование контракта APIРесурсы, методы HTTP, коды ответов, OpenAPI
3Модели данных и маппингДомен, DTO, соглашения JSON, версии полей
4Сервис каталога на PythonFastAPI, SQLite, эндпоинты резерва (практика SQLite)
5Сервис заказов на C#Minimal API, HttpClient, сохранение заказов
6Безопасность и устойчивостьJWT, API-ключ, таймауты, идемпотентность
7WebSocket и событияПротокол сообщений, heartbeat, рассылка
8Проверка в PostmanКоллекция, окружение, сценарий E2E

Проксирование WebSocket через nginx (Upgrade, Connection) — Nginx — конфиги под задачу.

Теория по REST, маппингу и WebSocket — в 8.05 Микросервисы и интеграция; этот раздел — применение на практике.


Что понадобится


Как учиться по разделу

  1. Пройдите интерактивный сценарий на этой странице (кнопка "Сквозной сценарий").
  2. Прочитайте шаги 1–3 и зафиксируйте контракт на бумаге или в OpenAPI.
  3. Поднимите оба сервиса локально (Практикум — сервис каталога на Python, Практикум — сервис заказов на C#) и сверьте ответы с песочницей.
  4. Закройте цикл в Postman и негативными кейсами из шага 8.

Закрепление: итоги, чек-лист.


Связь с теорией

Тема практикумаСтатья в энциклопедии
REST, коды HTTPREST
Проектирование и DTOПроектирование API
WebSocketРеактивные транспорты
Polling, SSE, webhookPolling, Long Polling, SSE и Webhook, Push, Pull, Webhooks
Интеграционные тестыПроверка взаимодействия компонентов