代碼在:
https://gitee.com/sleepforests/spring-cloud-gateway-demo
1狰贯、scg采用webflux也搓,不支持servlet協(xié)議赏廓,很多歷史代碼使用HttpServletRequest和HttpServletResponse都沒法用了,需要重新開發(fā)組件傍妒。
2幔摸、原來嵌入服務(wù)里面的Interceptor,使用了各種線程變量和request上下文颤练,獨(dú)立的物理網(wǎng)關(guān)和業(yè)務(wù)服務(wù)不在一個(gè)jvm里面既忆,需要使用header傳遞參數(shù),且需要考慮header的安全嗦玖、大小問題患雇。
3、原業(yè)務(wù)服務(wù)使用了各種注解宇挫,Interceptor處理@注解邏輯苛吱。獨(dú)立網(wǎng)關(guān)無法獲取配置的注解,導(dǎo)致有些邏輯遇到問題器瘪。本質(zhì)上注解也是一種配置翠储,如果移到網(wǎng)關(guān)配置也是可行的,但是感覺步子有點(diǎn)邁得太大橡疼。這個(gè)最佳實(shí)踐是如何援所,還需要考慮。
4欣除、body的處理有點(diǎn)惡心住拭,webflux的body讀取目前scg沒有提供友好的api接口,可以通過一些hack的方式拿到body耻涛,但是需要對(duì)于請(qǐng)求頭類型特別處理废酷,比如上傳文件的請(qǐng)求,拿到body也不好搞抹缕。建議規(guī)范下澈蟆,將網(wǎng)關(guān)需要獲取的變量通過header、cookie或者queryparam的方式傳遞過來卓研,body里面的內(nèi)容網(wǎng)關(guān)就不要?jiǎng)恿恕?/p>