Ocelot網關統一查看多個微服務asp.net core項目的swagger API接口


0、前言


 整體架構目錄:ASP.NET Core分布式項目實戰-目錄

一、准備


 前提需要下載安裝consul,項目需要懂添加swagger

統一在網關中配置多個微服務的swagger,需要用到服務注冊和發現,當然ocelot里面以及擁有了服務發現,因此需要把asp.net core項目先注冊到consul中。

樓主的項目是用到consul。下面的案例的我都是放在window系統上面弄的,正式環境需要把項目都部署到自己的服務器上面。

1、講解:什么叫服務注冊和發現

微服務的框架體系中,服務發現是不能不提的一個模塊。我相信了解或者熟悉微服務的童鞋應該都知道它的重要性。這里我只是簡單的提一下,畢竟這不是我們的重點。我們看下面的一幅圖片:

圖中,客戶端的一個接口,需要調用服務A-N。客戶端必須要知道所有服務的網絡位置的,以往的做法是配置是配置文件中,或者有些配置在數據庫中。這里就帶出幾個問題:
  需要配置N個服務的網絡位置,加大配置的復雜性
  服務的網絡位置變化,都需要改變每個調用者的配置
  集群的情況下,難以做負載(反向代理的方式除外)


總結起來一句話:服務多了,配置很麻煩,問題多多

既然有這些問題,那么服務發現就是解決這些問題的。話說,怎么解決呢?我們再看一張圖

與之前一張不同的是,加了個服務發現模塊。圖比較簡單,這邊文字描述下。服務A-N把當前自己的網絡位置注冊到服務發現模塊(這里注冊的意思就是告訴),服務發現就以K-V的方式記錄下,K一般是服務名,V就是IP:PORT。服務發現模塊定時的輪詢查看這些服務能不能訪問的了(這就是健康檢查)。客戶端在調用服務A-N的時候,就跑去服務發現模塊問下它們的網絡位置,然后再調用它們的服務。這樣的方式是不是就可以解決上面的問題了呢?客戶端完全不需要記錄這些服務網絡位置,客戶端和服務端完全解耦!
這個過程大體是這樣,當然服務發現模塊沒這么簡單。里面包含的東西還很多。這樣表述只是方便理解。
圖中的服務發現模塊基本上就是微服務架構中服務發現的作用了。

 

二、開始部署


首先先創建一個asp.net core web api 項目,我已經創建好了。然后添加nugut包 consul。

1、在項目里面的 Startup.cs  文件里面寫上我們的服務注冊,我把注冊的信息放在了appsetting.json 文件里頭了。

 

然后在ConfigureServices寫上服務注冊

 

Configure方法 寫上服務注冊。

 

ConsulApp方法:

 

注冊服務 RegisterService

 

至此,consul注冊已經OK。

 

2、配置swagger具體內容

我把swagger的微服務信息放在appsetting.json 里面了。

 

所以在startup.cs中的數據是從這里面獲取的

 

ConfigureServices方法總填寫如下:

其中里面的【】中的內容是可以替換的。

Configure 方法中填寫以下內容:

 

至此,swagger配置完成。

 

3、接下來就要部署Ocelot網關里面的內容啦。

apigateway項目也是創建一個asp.net core web api 項目,然后添加swaggernuget包。

然后在 ConfigureServices方法中寫上

 

然后在Configure 方法中寫上:

 

路由表里面寫的內容為:

 

 自此配置完成。

 

三、運行


 1、先運行consul

 

打開瀏覽器url地址:consul運行成功。

 

 

 2、運行userapi項目和apigateway項目。

在consul中發現多了一個userapi的服務注冊

 

 然后打開apigateway的swagger項目,可以看到userapi的接口,至此完成配置。

 

 具體swagger怎么配置,可以參考我之前的文章(努力編寫中)

 

參考網址:

http://www.cnblogs.com/focus-lei/p/9047410.html


 

 

asp.net core 交流群:787464275 歡迎加群交流
如果您認為這篇文章還不錯或者有所收獲,您可以點擊右下角的【推薦】按鈕精神支持,因為這種支持是我繼續寫作,分享的最大動力!

作者:LouieGuo
聲明:原創博客請在轉載時保留原文鏈接或者在文章開頭加上本人博客地址,如發現錯誤,歡迎批評指正。凡是轉載於本人的文章,不能設置打賞功能,如有特殊需求請與本人聯系!

微信公眾號:歡迎關注                                                 QQ技術交流群: 歡迎加群

                


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM