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/