Рубрики
Без рубрики

Kottpd — HTTP-сервер в чистом Kotlin

В сегодняшнем посте я хотел бы рассказать об одном из проектов, над которыми я работаю. … С тегами kotlin, https, java, rest api.

В сегодняшнем посте я хотел бы рассказать об одном из проектов, над которыми я работаю. Я определяю его как light HTTP framework и это сделано в чистом Kotlin . Основываясь на этих двух фактах, я назвал его коттпд .

Этот проект родился во время долгой поездки на автобусе. Интернета не было, и я решил написать что-нибудь без внешних зависимостей. Что может быть лучше, чем реализация хорошо известного текстового протокола?!

Не все фрагменты было легко найти во дворцах разума, но через пару часов первая версия была готова обслуживать стандартные HTTP-запросы. Дизайн API был создан с вдохновением из Spark-Java . Итак, это выглядит очень похоже.

Что мы могли бы найти под капотом? Прежде всего, это кэшированный пул потоков. Это помогает распределять и повторно использовать потоки для каждого HTTP-запроса. Затем в бесконечном цикле сервер ожидает входящих подключений, считывает их, пытается сопоставить с настроенными маршрутами и передает соответствующему обработчику, если он найден. Помимо обработчиков запросов вы также можете указать До и После фильтров для реализации какого—либо промежуточного программного обеспечения (например, логин, транзакции и т.д.).

Для чего это полезно?

Что ж, его можно использовать, если вы хотите создать веб-приложение, или REST API , или просто для обслуживания статического контента (это тоже поддерживается!). Но вы хотите сделать это легким способом. И тебе нравится Kotlin |/! Что это идеальный выбор для вас. Я уже упоминал, что он поддерживает SSL ?

Чтобы лучше объяснить это, позвольте мне показать вам пример, который можно легко найти в файле README. Но прежде всего вам нужно добавить его в качестве зависимости к вашему проекту. Библиотека опубликована в центральном репозитории maven, поэтому у вас не должно возникнуть никаких проблем с ней.

Здесь мы создаем экземпляр класса Server , определяем путь к папке со статическим содержимым, которое мы хотим обслуживать на нашем сервере. Затем мы определяем несколько обработчиков запросов (да, вы могли бы использовать для этого регулярные выражения). А затем есть блок с фильтрами. Они могут быть глобальными — когда не определен конкретный путь — и специфичными для конкретного пути. И, конечно, вы также могли бы определить некоторые обработчики исключений. Единственное, что осталось сделать — вызвать метод start() . По умолчанию ваше приложение будет прослушивать порт 9000 . Но вы можете просто передать любое значение порта, которое вы хотите, в качестве аргумента методу start() или определить его с помощью системного свойства server.port( -Dserver.port=8080 ).

Вывод

Я надеюсь, что вы заинтересовались моим проектом. Пожалуйста, попробуйте использовать его в своих приложениях, и я буду очень рад увидеть любые отзывы от вас. Если вы никогда раньше не пользовались Kotlin, сейчас самое время начать!

Делай Котлин — делай Веб!

Оригинал: “https://dev.to/gimlet2/kottpd–http-server-in-pure-kotlin-k7g”