1. 程式人生 > >Ocelot簡易教程(六)之重寫配置文件存儲方式並優化響應數據

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

mssql image 後臺 17. 錯誤 同時 原生 及授權 res

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

本來這篇文章在昨天晚上就能發布的,悲劇的是寫了兩三千字的文章居然沒保存,結果我懵逼了。今天重新來寫這篇文章。今天我們就一起來探討下如何重寫Ocelot配置文件的存儲方式以及獲取方式。

作者:依樂祝
原文地址:https://www.cnblogs.com/yilezhu/p/9807125.html

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

實例教程集成步驟

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

    技術分享圖片

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

技術分享圖片

  1. OcelotDemo網關項目作如下修改,Programs.cs文件移除對Ocelot.json文件的引用,因為配置文件的獲取方式已經改成了從數據庫中獲取,所以,你需要新建一個數據庫,然後執行數據庫腳本創建數據庫表,這裏只給出Mssql的數據庫腳本https://github.com/yilezhu/Ocelot.ConfigAuthLimitCache/blob/master/Ocelot.sql ,在項目源代碼下面,大家自行下載。

  2. ConfigureServices服務中Ocelot的註入的同時需要註入我們的擴展方法,如下所示:

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

    註意:這裏需要傳入SqlServer的數據庫連接字符串,由於博主擴展使用的Dapper+MSSQL所以這裏需要傳入步驟1中創建的數據庫的鏈接字符串。

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

    技術分享圖片

    大家看到沒有,這條路由的意思是接受/ss1/{通配符} 的路由,然後轉到到下面就是/api/{通配符} 。

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

    技術分享圖片

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

    技術分享圖片

    看到沒有,返回了404的狀態碼,感覺不夠友好,所以,我們也進行了改造。直接看結果吧

  6. 為了看到效果,你需要在Configure中少做下修改

     app.UseAhphOcelot().Wait();
  7. 然後我們重新啟動下Ocelot網關項目,重新訪問下6中的Url吧。

    技術分享圖片

    看到沒有,返回的數據更友好,而且是200的狀態。當然大家也可以忽略這個功能哈。

源碼地址:

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

總結

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

Ocelot簡易教程目錄

  1. Ocelot簡易教程(一)之Ocelot是什麽
  2. Ocelot簡易教程(二)之快速開始1
  3. Ocelot簡易教程(二)之快速開始2
  4. Ocelot簡易教程(三)之主要特性及路由詳解
  5. Ocelot簡易教程(四)之請求聚合以及服務發現
  6. Ocelot簡易教程(五)之集成IdentityServer認證以及授權
  7. Ocelot簡易教程(六)之重寫配置文件存儲方式並優化響應數據
  8. Ocelot簡易教程(七)之配置文件數據庫存儲插件源碼解析

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