【Blog.Core开源】网关统一集成下游服务文档
一般看到公眾號更新,就是大概率要開始上班了😂
上回書咱們說到了《【Blog.Core開源】快速預覽Admin界面效果》,這樣我們就可以專注于后端開發,而且也能快速的實現效果的預覽。那今天我們繼續來往下走,說一說網關相關的內容,打算做一個網關的專題,希望可以幫助下社區吧。
先說故事背景
想必很多小伙伴都已經在工作和學習中,使用過網關了,而且在ASP.NETCore中,使用較多的就是Ocelot,當然現在的市場上也有很多其他的開源組件,這里以后再說吧,先說說Ocelot,在Blog.Core項目中,很久之前我也是用的Ocelot作為網關來搭建微服務體系架構的,只不過2021年忙著工作和寫書,沒有太多的精力吧網關給搞起來,今年就慢慢優化下項目吧。
Ocelot來實現網關還是比較簡單的,只是簡單的配置下Json文件就行,然后通過Postman來進行測試,查看效果。功能上當然還有其他的服務注冊和發現,比如用Consul或者是Nacos,甚至是Azure,目前咱們還用不到。網關另一個功能就是鑒權認證和Header信息的下發,這個咱們下篇文章再說。
那剩下的就是網關接口文檔了,如果一直用Postman畢竟不是很方便,肯定是要給前端一個踏踏實實的接口文檔的,我個人比較喜歡用Swagger,其他的接口文檔雖然很多,但是不是很習慣。那就出現了今天的問題,如何在網關的Swagger文檔中,把下游的所有微服務都集中起來,通過一個文檔地址,就能看到所有的接口信息呢,直接上代碼。
01
PART
調整Ocelot.json
幾乎大家都會寫這塊,我就不過多的介紹每個節點什么意思了,只是以BlogCore子服務為例,說說如何配置,如果以后增加其他服務,這里依此類推,舉一反三。
核心點就是把Swagger的json地址,單獨寫一個路由映射配置,這樣就可以把Swagger給引進來了,當然如果你把下游的SwaggerJson地址給手動改成和接口類似的模板,這樣寫一個就行,就不用把api和swagger單獨分開寫兩個了。
02
PART
渲染子服務接口文檔
配置好了Json文件,下面就需要引入到網關項目里,打開Blog.Core.Gateway的Startup文件,找到Swagger的中間件配置的地方,修改顯示規則:
我這里單獨封裝了一個擴展方法,通過手動配置參數名,就可以循環添加到網關的swagger文檔里了。
似乎到這里已經完成了,其實還不行,因為咱們的BlogCore子服務的路由還是api開頭的,這樣在網關的swagger中訪問接口的話,是404的:
當然網關這里我們可以做些優化,比如說統一返回數據格式,友好提醒啥的,這個大家自己根據項目需要來處理吧。
現在要解決的就是404的問題,兩種方案:
1、直接用下游的路由來配置到ocelot.json里,這樣就能訪問了,但是這樣的話,其他同樣路徑的微服務怎么辦?
2、那就直接在子服務中修改下路徑即可。√
03
PART
下游微服務修改路由
這個就很簡單了,直接給下游增加一個路由前綴就行了,我們已經有這個功能了:
這樣就ok啦,絕大部分的接口已經增加上了路由前綴,這里為啥要說絕大部分呢,因為目前這個全局路由前綴還有點兒小問題,就是如果在接口的Action上寫的絕對路徑,還是沒有增加上路由前綴的,以后我會優化掉。
請求網關接口(9000),也能很完美的實現效果,單獨訪問子服務的swagger(9291)也可以使用:
(網關接口文檔)
(子服務接口文檔)
好啦,今天的分享暫時就到這里吧,網關如何集成下游服務接口文檔的,那在以后的文章中,我會給大家分享下,如何鑒權/認證和信息下發,如何實現網關文檔登錄訪問(目前該功能在BlogCore里),如何實現處理審計日志(目前該功能在BlogCore里),如何連接服務注冊中心等等,這是一個網關的專題,希望大家喜歡。
總結
以上是生活随笔為你收集整理的【Blog.Core开源】网关统一集成下游服务文档的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET6之MiniAPI(十三):健康
- 下一篇: 技术分享 | 混合云模式下SaaS端前端