ocelot系列文章02---在.netcore項目中集成

1、創建項目並引入安裝包

首先,創建2個WebApi項目,WebApi01和WebApi02,地址分別https://localhost:44313和https://localhost:44390,其中WebApi01當作網關,WebApi02當作具體的微服務Api。

然後,將Ocelot的NuGet軟件包安裝到WebApi01項目中。

注意我這裏安裝的是17.0.0版本,配置方面會有點不一樣。

2、在Startup.ConfigureServices中增加services.AddOcelot

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new OpenApiInfo { Title = "Autofac.WebApi", Version = "v1" });
    });

    services.AddOcelot();
}

 

3、在Startup.Configure中增加app.UseOcelot().Wait();

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseSwagger();
        app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "Ocelot.WebApi01 v1"));
    }

    app.UseHttpsRedirection();

    app.UseRouting();

    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });

    app.UseOcelot().Wait();
}

 4、ocelot.json文件(你也要吧用默認的json配置文件)

{
  "Routes": [ //路由配置(注16.1版本將ReRoutes換成Routes)
    {
      "DownstreamPathTemplate": "/{url}", // 下游(服務提供方)服務路由模板
      "DownstreamScheme": "https", // 下游Uri方案,http、https
      "DownstreamHostAndPorts": [ // 服務地址和端口,如果是集羣就設置多個
        {
          "Host": "localhost",
          "Port": 44390
        }
      ],
      "UpstreamPathTemplate": "/api/{url}", // 上游(客戶端,服務消費方)請求路由模板
      "UpstreamHttpMethod": [ "GET" ] // 允許的上游HTTP請求方法,可以寫多個
    }
  ],
  "GlobalConfiguration": { //全局配置
    "BaseUrl": "https://localhost:44313" //網關對外地址
  }
}

5、Program.CreateHostBuilder中增加AddJsonFile("ocelot.json", optional: false, reloadOnChange: true);

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration((hostingContext, builder) => {
            builder.AddJsonFile("ocelot.json", optional: false, reloadOnChange: true);
        })
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        });

6、測試

讓我們來測試看看,https://localhost:44313/api/WeatherForecast會不會跳轉https://localhost:44390/WeatherForecast。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章