上一篇文章介紹了Ocelot的基本概念:https://www.cnblogs.com/yangleiyu/p/15043762.html
本文介紹在.net core中如何使用ocelot。
Ocelot是系統中對外暴露的一個請求入口,所有外部介面都必須通過這個閘道器才能向下遊API發出請求
1、Nuget參照Ocelot(注意版本,我用的是16.0.1)
2、根目錄新增組態檔Ocelot.json
{ "ReRoutes": [], "GlobalConfiguration": {} }
說明:ReRoutes是一個陣列,將會包含伺服器的路由設定,GlobalConfiguration則是一個全域性設定項。
3、修改Program.cs,參照新增的組態檔
4、修改Startup.cs註冊服務
5、組態檔
設定如下:
{ //全域性設定 "GlobalConfiguration": { "BaseUrl": "http://192.168.50.118:8003/" //閘道器暴露的的地址。 }, //路由設定 "routes": [ { ///{url}轉發所有 //"UpstreamHost": "localhost:4023"轉發特定服務 "UpstreamPathTemplate": "/QiantoonService/Oam", //上游Api請求路由規則 "DownstreamPathTemplate": "/QiantoonService/Oam/Oam", //閘道器轉發到下游路由規則 "UpstreamHttpMethod": [ "GET", "POST" ], //上下游支援請求方法 "DownstreamScheme": "http", //下游服務設定 "DownstreamHostAndPorts": [ { "Host": "192.168.50.118", //下游地址 "Port": 8001 //下游埠號 } ] }, { "UpstreamPathTemplate": "/QiantoonService/SelfReg", //上游Api請求路由規則 "DownstreamPathTemplate": "/QiantoonService/SelfReg/SelfReg", //閘道器轉發到下游路由規則 "UpstreamHttpMethod": [ "GET", "POST" ], //上下游支援請求方法 "DownstreamScheme": "http", //下游服務設定 "DownstreamHostAndPorts": [ { "Host": "192.168.50.118", //下游地址 "Port": 8002 //下游埠號 } ] } ] }
其他說明:
GlobalConfiguration,它是一個全域性設定項,通常我們都要在這個設定項中新增一個屬性BaseUrl
,BaseUrl就是Ocelot服務對外暴露的Url。
"GlobalConfiguration": {"BaseUrl": "http://localhost:4727"}
ReRoutes是一個陣列,其中的每一個元素代表了一個路由,而一個路由所包含的所有可設定引數如下:
{ "DownstreamPathTemplate": "/", "UpstreamPathTemplate": "/", "UpstreamHttpMethod": [ "Get" ], "AddHeadersToRequest": {}, "AddClaimsToRequest": {}, "RouteClaimsRequirement": {}, "AddQueriesToRequest": {}, "RequestIdKey": "", "FileCacheOptions": { "TtlSeconds": 0, "Region": "" }, "ReRouteIsCaseSensitive": false, "ServiceName": "", "DownstreamScheme": "http", "DownstreamHostAndPorts": [ { "Host": "localhost", "Port": 8001, } ], "QoSOptions": { "ExceptionsAllowedBeforeBreaking": 0, "DurationOfBreak": 0, "TimeoutValue": 0 }, "LoadBalancer": "", "RateLimitOptions": { "ClientWhitelist": [], "EnableRateLimiting": false, "Period": "", "PeriodTimespan": 0, "Limit": 0 }, "AuthenticationOptions": { "AuthenticationProviderKey": "", "AllowedScopes": [] }, "HttpHandlerOptions": { "AllowAutoRedirect": true, "UseCookieContainer": true, "UseTracing": true }, "UseServiceDiscovery": false }
具體含義介紹:
Downstream 下游服務設定
UpStream 上游服務設定
Aggregates 服務聚合設定
ServiceName, LoadBalancer, UseServiceDiscovery 服務發現設定
AuthenticationOptions 服務認證設定
RouteClaimsRequirement Claims 鑑權設定
RateLimitOptions 限流設定
FileCacheOptions 快取設定
QosOptions 服務質量與熔斷設定
DownstreamHeaderTransform 頭資訊轉發設定
注意
組態檔中「routes」關鍵字為新版本,舊版本關鍵字為「ReRoutes」
此處巨坑,小楊被坑了半天
本文來自部落格園,作者:yangleiyu,轉載請註明原文連結:https://www.cnblogs.com/yangleiyu/p/16847439.html