[轉載]Ocelot簡易教程(六)之重寫配置文件存儲方式並優化響應數據

做者:依樂祝
原文地址:http://www.javashuo.com/article/p-bycbsvjo-x.htmljavascript

不少人都說配置文件的配置很繁瑣,若是存儲在數據庫就方便不少,能夠經過自定義UI界面在後臺進行路由的配置,而後經過調用Administration API讓修改後的路由規則當即生效。固然這都是後話了。今天就教你手把手的來把配置文件放到數據庫中,而後在數據庫中進行路由的配置。固然,我會在Github上開放源代碼供你們參考。至於Nuget包的話,今天還沒來得及弄,等明天晚上弄好,再發布Nuget包吧,今天先引用下源代碼來使用吧。你們委屈一下吧。本文仍是沿用以前的系列文章裏面的Demo。因此能夠先下載以前系列文章裏面的Demo源碼。https://github.com/yilezhu/OcelotDemohtml

實例教程集成步驟

  1. Github上下載重寫的配置文件的源代碼,地址:https://github.com/yilezhu/Ocelot.ConfigAuthLimitCache 而後把項目文件拷貝到。系列文章的源代碼下面,並添加項目引用。以下所示:java

    1540302626763

項目添加進來後的結構以下所示:git

1540302716406

  1. OcelotDemo網關項目做以下修改,Programs.cs文件移除對Ocelot.json文件的引用,由於配置文件的獲取方式已經改爲了從數據庫中獲取,因此,你須要新建一個數據庫,而後執行數據庫腳本建立數據庫表,這裏只給出Mssql的數據庫腳本https://github.com/yilezhu/Ocelot.ConfigAuthLimitCache/blob/master/Ocelot.sql ,在項目源代碼下面,你們自行下載。github

  2. ConfigureServices服務中Ocelot的注入的同時須要注入咱們的擴展方法,以下所示:sql

    services.AddOcelot()//注入Ocelot服務
                        .AddAuthLimitCache(option=> {
                            option.DbConnectionStrings = "Server=.;Database=Ocelot;User ID=sa;Password=1;";
                        })
                        .AddConsul();

    注意:這裏須要傳入SqlServer的數據庫鏈接字符串,因爲博主擴展使用的Dapper+MSSQL因此這裏須要傳入步驟1中建立的數據庫的連接字符串。數據庫

  3. 咱們在數據庫中配置一個路由吧,以下所示:字段名稱基本都是跟Ocelot原生配置名稱同樣,只是擴展了一些字段方便後期作限流的json

    1540303270834

    你們看到沒有,這條路由的意思是接受/ss1/{通配符} 的路由,而後轉到到下面就是/api/{通配符} 。c#

  4. 路由配置好了,那就讓咱們啓動一下項目看下效果吧。api

    1540303513128

  5. 上面是正常的訪問結果,當咱們訪問一個錯誤的路由的時候,再看看吧。

    1540304187258

    看到沒有,返回了404的狀態碼,感受不夠友好,因此,咱們也進行了改造。直接看結果吧

  6. 爲了看到效果,你須要在Configure中少作下修改

    app.UseAhphOcelot().Wait();
  7. 而後咱們從新啓動下Ocelot網關項目,從新訪問下6中的Url吧。

    1540304235799

    看到沒有,返回的數據更友好,並且是200的狀態。固然你們也能夠忽略這個功能哈。

源碼地址:

  1. Demo地址:https://github.com/yilezhu/OcelotDemo
  2. 擴展插件地址:https://github.com/yilezhu/Ocelot.ConfigAuthLimitCache

總結

本文主要經過實例講述如何集成,將配置文件存儲到數據庫的插件。源碼已經開源,今天暫時沒有發佈Nuget包,明天再發布吧。固然你能夠自行擴展代碼。實現你本身的業務。我把配置文件存儲到數據庫的目的就是方便後面作UI管理方便,還有就是能夠基於這些路由在數據庫中對每一個客戶端進行單獨的限流。最後感謝你們的閱讀。

 

做者:依樂祝

出處:https://www.cnblogs.com/yilezhu

聯繫:1015657114@qq.com .NET Core實戰項目交流羣:637326624

本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。若有問題或建議,請多多賜教,很是感謝。
DotNetCore實戰
相關文章
相關標籤/搜索