Проект реализует функциональность аналогичную Spring MVC @RestController
для HTTP-запросов, используя Netty. Не требуется внешний servlet-контейнер, проект реализует REST-стильные HTTP-запросы с использованием Spring и Netty, а также поддерживает функциональность Spring @RestController
.
Netty предоставляет поддержку HTTP через объект FullHttpRequest
, который позволяет получить URL и метод HTTP-запроса. Однако, нет обработки URL для выполнения соответствующих действий. Поэтому основная идея проекта заключается в следующем:
Создание пользовательских аннотаций: @Rest
, @ReqMapping
, @ReqParam
. Аннотация @Rest
используется для маркировки класса контроллера, @ReqMapping
— для маркировки метода, соответствующего определенному URL, а @ReqParam
— для маркировки параметров метода, соответствующих параметрам HTTP-запроса.
Разработка класса PackageScanUtils
для сканирования классов в указанном пакете.
Использование рефлексии для получения классов, помеченных аннотацией @Rest
, и их инстанцирования. Затем получение значений аннотаций @Rest
и @ReqMapping
, формирование URL и сохранение их в ConcurrentHashMap
в виде пар ключ-значение, где ключ — это URL, а значение — это соответствующий метод Method
и объект. При получении запроса от клиента URL используется для получения метода Method
и объекта из карты, и затем метод выполняется с помощью рефлексии.4. Возврат результата выполнения метода через FullHttpResponse
. Перед возвратом проверяется тип результата: если это строка, то она возвращается через ChannelHandlerContext.write
, а для других типов используется JSON.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )