1. 程式人生 > >無需外部servlet容器,基於Spring+netty實現rest風格的url請求

無需外部servlet容器,基於Spring+netty實現rest風格的url請求

無需外部servlet容器,基於Spring+netty實現rest風格的http請求並實現Spring的@RestController功能。
netty自身提供了對http的支援,通過FullHttpRequest物件可以獲取請求的url,和http請求方式,但是並沒有處理url應該怎麼處理請求.所以基本思路是:

1. 自定義註解:@Rest,@ReqMapping,@ReqParam , @Rest用於標記某個類是控制器,@ReqMapping用於標記方法哪個url對應該方法,@ReqParam用於標記方法引數,對應於哪個http請求引數

2.編寫PackageScanUtils工具類用於掃描指定包下的class為類

3 通過反射獲取帶有@Rest註解的類並例項化,獲取@Rest和@RuqMapping的value值,拼接成url,通過ConcurrentHashMap 以鍵值對的形式,記錄url和對應方法Method的關係,當客戶端請求時,通過url從Map中獲取執行的Method和對應的Object,通過反射執行對應的方法

4 將反射呼叫方法得到的結果通FullHttpResponse返回,返回前先判斷結果類如果是字串直接通過ChannelHandlerContext.write輸出,其他型別則通過json返回

原始碼地址: https://gitee.com/brucelwl/netty-rest