Содержание курса
Play 3.0.11: устройство фреймворка и первый сервис
8 уроков
1.
Play 3 глазами разработчика с другого стека
↗
2.
Beacon: постановка задачи сквозного проекта
↗
3.
Сборка проекта: sbt, sbt-plugin 3.0.11, PlayJava
↗
4.
Раскладка проекта и генерируемый код
↗
5.
Dev-режим: перезагрузка, ошибки, локальный запуск
↗
6.
Точка входа: ApplicationLoader, Environment, Configuration
↗
7.
Первый контроллер и первый маршрут Beacon
↗
8.
Жизненный цикл: старт, остановка, ApplicationLifecycle
↗
Маршрутизация: routes-файл, роутер, обратные маршруты
9 уроков
1.
Как компилируется conf/routes
↗
2.
Параметры пути и строки запроса
↗
3.
PathBindable и QueryStringBindable
↗
4.
Обратные маршруты
↗
5.
JavaScript reverse router
↗
6.
Модульность маршрутов: include, префиксы, агрегация
↗
7.
Программный роутер: RoutingDsl
↗
8.
Свой Router и HttpRequestHandler
↗
9.
Практика: карта маршрутов Beacon
↗
Контроллеры, Action и Result
9 уроков
1.
Action, EssentialAction и конвейер обработки
↗
2.
Result: статусы, заголовки, тело
↗
3.
Http.Request, RequestHeader и атрибуты
↗
4.
Асинхронные действия
↗
5.
Session, Flash и cookies
↗
6.
Content negotiation
↗
7.
Композиция действий: play.mvc.Action и @With
↗
8.
ActionCreator и глобальные перехваты
↗
9.
Практика: слой контроллеров Beacon
↗
Тело запроса: BodyParser'ы
8 уроков
1.
Как Play читает тело
↗
2.
Встроенные парсеры и BodyParser.Of
↗
3.
JSON-тело: разбор и ошибки
↗
4.
Формы и multipart
↗
5.
Загрузка файлов
↗
6.
Свой BodyParser
↗
7.
Потоковое тело
↗
8.
Практика: импорт проверок в Beacon
↗
JSON, модели данных и валидация
8 уроков
1.
play.libs.Json и ObjectMapper Play
↗
2.
JsonNode против DTO
↗
3.
Настройка ObjectMapper через DI
↗
4.
Sealed-иерархии и полиморфный JSON
↗
5.
Формы и Bean Validation
↗
6.
Ошибки валидации в JSON API
↗
7.
XML, CSV и другие представления
↗
8.
Практика: контракт Beacon API v1
↗
Конфигурация, DI и модули
9 уроков
1.
HOCON и Config API
↗
2.
Guice в Play: биндинги и области видимости
↗
3.
Свои модули и play.modules.enabled
↗
4.
Типобезопасная конфигурация
↗
5.
Окружения: dev, test, prod
↗
6.
ApplicationLifecycle и внешние ресурсы
↗
7.
Compile-time DI
↗
8.
Тестовые переопределения
↗
9.
Практика: конфигурация Beacon
↗
Асинхронность: пулы, диспетчеры, Pekko
9 уроков
1.
Модель исполнения Play
↗
2.
ClassLoaderExecutionContext и контекст запроса
↗
3.
Свои execution context'ы
↗
4.
Блокирующий код в асинхронном фреймворке
↗
5.
Java 27: виртуальные потоки в Play-приложении
↗
6.
Pekko-акторы внутри Play
↗
7.
Планировщик Pekko и периодические задачи
↗
8.
Таймауты, отмена, устойчивость
↗
9.
Практика: планировщик проб Beacon
↗
База данных: JDBC, эволюции, транзакции
9 уроков
1.
play-java-jdbc и play.db.Database
↗
2.
Эволюции: формат и применение
↗
3.
Эволюции в жизни проекта
↗
4.
DatabaseExecutionContext
↗
5.
Репозитории Beacon
↗
6.
Транзакции и согласованность
↗
7.
HikariCP и пул соединений
↗
8.
Ebean, JPA и другие варианты доступа к данным
↗
9.
Практика: схема и репозитории
↗
Play WS: исходящие HTTP-вызовы
9 уроков
1.
WSClient: подключение и первый вызов
↗
2.
Таймауты, редиректы и TLS
↗
3.
Разбор ответа и обработка ошибок
↗
4.
WSRequestFilter и наблюдаемость исходящих вызовов
↗
5.
Устойчивость: ретраи, backoff, circuit breaker
↗
6.
Потоковая работа с ответом
↗
7.
Тестирование кода, который ходит наружу
↗
8.
Пулы соединений и нагрузка
↗
9.
Практика: ProbeRunner
↗
Pekko Streams и потоковые ответы
8 уроков
1.
Source, Flow, Sink в контексте Play
↗
2.
Chunked-ответы
↗
3.
Server-Sent Events
↗
4.
Backpressure и материализация
↗
5.
Отдача файлов и range-запросы
↗
6.
Шина событий: BroadcastHub и MergeHub
↗
7.
Ошибки и завершение потоков
↗
8.
Практика: живой поток статусов
↗
WebSocket
8 уроков
1.
WebSocket в Play: API и жизненный цикл
↗
2.
Flow-based соединения
↗
3.
ActorFlow и акторы на соединение
↗
4.
Аутентификация и авторизация соединения
↗
5.
Протокол сообщений
↗
6.
Надёжность соединения
↗
7.
Тестирование WebSocket
↗
8.
Практика: live-дашборд Beacon
↗
Twirl, формы, ассеты и i18n
9 уроков
1.
Twirl: шаблон как класс
↗
2.
Layout, партиалы, DI в шаблонах
↗
3.
Формы в шаблонах и CSRF
↗
4.
Валидация форм и отображение ошибок
↗
5.
Ассеты
↗
6.
Интернационализация
↗
7.
Кастомные форматы Twirl
↗
8.
PRG, flash и навигация
↗
9.
Практика: публичная статус-страница
↗
Фильтры и безопасность
9 уроков
1.
EssentialFilter и Filter API
↗
2.
Стандартные фильтры Play
↗
3.
Порядок фильтров и составные сценарии
↗
4.
Сессия Play и подпись cookie
↗
5.
Аутентификация: Security.Authenticated и своё решение
↗
6.
API-ключи и авторизация
↗
7.
Ограничение частоты запросов
↗
8.
HTTPS, заголовки и типовые угрозы
↗
9.
Практика: контур безопасности Beacon
↗
Ошибки, кэш, производительность
9 уроков
1.
HttpErrorHandler
↗
2.
Доменные ошибки и их отображение
↗
3.
Логирование
↗
4.
Кэш: AsyncCacheApi и Caffeine
↗
5.
HTTP-кэширование ответов
↗
6.
Наблюдаемость
↗
7.
Настройка сервера Pekko HTTP
↗
8.
HTTP/2 и производительность транспорта
↗
9.
Практика: наблюдаемость Beacon
↗
Тестирование, сборка и эксплуатация
9 уроков
1.
Тестовая инфраструктура Play
↗
2.
Юнит-тесты контроллеров
↗
3.
Функциональные тесты
↗
4.
Тесты с базой данных
↗
5.
Тесты внешних вызовов
↗
6.
Тесты маршрутизации, безопасности и потоков
↗
7.
sbt dist и stage: что внутри артефакта
↗
8.
Docker-образ и prod-конфигурация
↗
9.
Практика: релиз Beacon
↗