Ocelot是一个用.NET Core实现并且开源的API网关技术,它的功能包括了:路由、请求聚合、服务发现、认证、鉴权、限流熔断、并内置了负载均衡器、Service Fabric、Skywalking等的集成。而且这些功能都只需要简单的配置即可完成。
小编为了简易演示api网关的使用,创建了两个项目:
一、项目PipeManagerSystem(注意要添加允许跨域访问):测试API项目
1)打开vs2017,创建Asp.net core web 应用程序,命名为PipeManagerSystem
2) 选择API,确定
3)新建Controller,命名为PipeController
4) [Route("api/[controller]")]修改为[Route("api/[controller]/[action]")]
5)新增方法GetPipeInfo,如下所示:
[HttpGet]
public ActionResult
{
return "PipeInfo";
}
6)发布至IIS,如果地址为:10.9.53.81:9000,则测试http:10.9.53.81:9000/api/pipe/GetPipeInfo是否可以访问,能访问则成功,否则失败。
二、项目ApiGateWay,网关项目
1)打开vs2017,创建Asp.net core web 应用程序,命名为ApiGateWay
2)选择API,确定
3)添加Nuget包,Ocelot。注意:因小编创建的项目为.net core2.1版本,因此添加的Ocelot Nuget包版本为13.5.1(现最新的为13.8.0,支持.net core 3.0)
4)添加OcelotConfig.json文件,内容为:
{
"ReRoutes": [
{
"DownstreamPathTemplate": "/api/{everything}",
"DownstreamScheme": "http",
"DownstreamHostAndPorts": [
{
"Host": "10.9.53.81",
"Port": 9000
}
],
"UpstreamPathTemplate": "/api/PipeManagerSystem/{everything}",
"UpstreamHttpMethod": [ "Get", "Post" ]
}
]
}
5)在Startup.cs添加Ocelot的引用
using Ocelot.DependencyInjection;
using Ocelot.Middleware;
在ConfigureServices方法中添加
services.AddOcelot(new ConfigurationBuilder()
.AddJsonFile("OcelotConfig.json")
.Build());
在Configure方法中添加
app.UseOcelot().Wait();
6)调试运行,地址默认为https://localhost:44332/api/values,修改为:https://localhost:44332/api/PipeManagerSystem/pipe/GetPipeInfo
配置完成