Ktor 3.4: JetBrains улучшила работу с HTTP-клиентом и добавила двусторонний стриминг
-
Добавлено пользователем arturbaranok - 27.01.2026 - 16:31
JetBrains выпустила Ktor 3.4 — обновление Kotlin-фреймворка для асинхронной разработки серверных и клиентских приложений. Новый релиз расширяет возможности HTTP-клиента, добавляет поддержку duplex-стриминга в OkHttp и вводит механизм автоматической отмены запросов при отключении клиента.
Отмена HTTP-запросов при разрыве соединения
Одним из ключевых нововведений стал плагин HttpRequestLifecycle. Он позволяет автоматически отменять выполняющиеся HTTP-запросы, если клиент отключается до их завершения.
Это особенно полезно в случаях с:
- длительными запросами,
- ресурсоёмкими операциями,
- потоковой обработкой данных.
При разрыве соединения корутина, обрабатывающая запрос, отменяется, вместе с ней завершаются все связанные launch или async-корутины. Механизм структурированной конкурентности при этом корректно освобождает ресурсы.
На текущий момент эта возможность поддерживается только для движков Netty и CIO.
Динамическая документация API
Ktor 3.4 также получил новый API для динамического документирования эндпоинтов, который работает в связке с новым компиляторным плагином.
В отличие от традиционного подхода со статическим Swagger-файлом, модель документации теперь формируется во время выполнения, на основе данных, встроенных в routing-дерево приложения.
Как это работает:
- разработчик включает генерацию документации через Ktor Gradle Plugin;
- описание эндпоинтов добавляется прямо в код с помощью нового API
describe; - документация автоматически собирается на основе этих данных.
Такой подход упрощает поддержку документации и снижает риск рассинхронизации между кодом и API-описанием.
Duplex-стриминг в OkHttp
В версии 3.4 OkHttp client engine получил поддержку duplex-стриминга. Это позволяет клиенту одновременно отправлять тело запроса и получать данные ответа.
В обычных HTTP-вызовах сначала полностью отправляется запрос, и только затем начинается получение ответа. Duplex-стриминг снимает это ограничение и особенно полезен для:
- потоковых API,
- интерактивных сервисов,
- сценариев с большим объёмом данных.
Функция доступна для соединений HTTP/2 и включается через свойство:
duplexStreamingEnabled в OkHttpConfig.
Поддержка Zstd в плагине Compression
Ещё одно улучшение — поддержка алгоритма сжатия Zstd в плагине Compression. Для этого добавлен модуль:
ktor-server-compression-zstd
Zstd отличается:
- высокой степенью сжатия,
- низкими задержками,
- настраиваемым уровнем компрессии.
Это делает его удобным выбором для серверных приложений с высокими требованиями к производительности.
Итог
Ktor 3.4 делает фреймворк более удобным для сложных и высоконагруженных сценариев:
- управление жизненным циклом HTTP-запросов стало безопаснее,
- работа с потоковыми данными — гибче,
- документация API — ближе к коду.
Обновление продолжает курс JetBrains на развитие Ktor как современного Kotlin-фреймворка для серверных и клиентских приложений.