asp.net core 微服务网关示例 ocelot gateway Demo
ocelot asp.net core 微服务 gateway介绍
https://ocelot.readthedocs.io/en/latest/introduction/gettingstarted.html
1. 新建asp.net core webapi空项目 AProject, nuget引用ocelot插件
2. 新建asp.net core webapi示例项目BProject,并实现todoitemscontroller get方法,http://localhost:22/api/todoitems
3. 在AProject项目,新建ocelot.json
{ "Routes": [ { //下游请求 "DownstreamPathTemplate": "/api/todoitems/", "DownstreamScheme": "http", "DownstreamHostAndPorts": [ { "Host": "localhost", "Port": 22 } ], //上游请求 "UpstreamPathTemplate": "/todoitems/", "UpstreamHttpMethod": [ "Get" ] } ],
//Gateway 的地址 "GlobalConfiguration": { "BaseUrl": "http://localhost:5211" } }
在AProject项目,Program.cs 文件里 写以下代码
using Ocelot.DependencyInjection; using Ocelot.Middleware; new WebHostBuilder() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .ConfigureAppConfiguration((hostingContext, config) => { config .SetBasePath(hostingContext.HostingEnvironment.ContentRootPath) .AddJsonFile("appsettings.json", true, true) .AddJsonFile($"appsettings.{hostingContext.HostingEnvironment.EnvironmentName}.json", true, true) .AddJsonFile("ocelot.json") .AddEnvironmentVariables(); }) .ConfigureServices(s => { s.AddOcelot(); }) .ConfigureLogging((hostingContext, logging) => { //add your logging }) .UseIISIntegration() .Configure(app => { app.UseOcelot().Wait(); }) .Build() .Run();
启动AProject、BProject项目, 此时访问:
http://localhost:5211/todoitems/ 会跳到http://localhost:22/api/todoitems/