.Netcore 2.0 Ocelot Api网关教程(1) 路由介绍 上一篇文章搭建了一个简单的Api网关,可以实现简单的Api路由,本文介绍一下路由,即配置文件中ReRoutes,ReRoutes是Ocelot配置文件中最重要的部分,实现了由上游到下游的路由转发. 上一篇文章中使用的configuration.json文件如下: { "ReRoutes": [ { "DownstreamPathTemplate": "/api/values"…
本文介绍Ocelot中的配置管理,配置管理允许在Api网关运行时动态通过Http Api查看/修改当前配置.由于该功能权限很高,所以需要授权才能进行相关操作.有两种方式来认证,外部Identity Server或内部Identity Server. 1.外部Identity Server 修改 Startup 中的 ConfigureServices 方法如下: public void ConfigureServices(IServiceCollection services) { servic…
本文介绍Ocelot中的限流,限流允许Api网关控制一段时间内特定api的总访问次数.限流的使用非常简单,只需要添加配置即可. 1.添加限流 修改 configuration.json 配置文件,对 UpstreamPathTemplate 为 /webapib/values 的配置修改如下: { // ... "UpstreamPathTemplate": "/webapib/values", "UpstreamHttpMethod": [ &…
本文介绍Ocelot中的认证和授权(通过IdentityServer4),本文只使用最简单的IdentityServer,不会对IdentityServer4进行过多讲解. 1.Identity Server 4 (1)新建一个新的WebApi项目命名为IdentityServer,添加 IdentityServer4 Nuget包.(2)添加Config类,添加如下代码: public static IEnumerable<ApiResource> GetApiResources() { r…
本文介绍Ocelot中的服务发现(Service Discovery),Ocelot允许指定一个服务发现提供器,之后将从中寻找下游服务的host和port来进行请求路由.关于服务发现的详细介绍请点击.在Ocelot中使用了Consul作为服务发现的provider. 1.Consul下载安装 从官方下载页选择合适的平台下载,解压出一个二进制文件并保存到相应位置,并将路径存入path中,本文以windows版本为例(其他平台操作类似).打开 cmd/powershell 运行 consul age…
Ocelot(Github)Ocelot官方文档(英文)本文不会介绍Api网关是什么以及Ocelot能干什么需要对Api网关及Ocelot有一定的理论了解 开始使用Ocelot搭建一个入门级Api网关 1.新建3个WebApi项目,分别命名为OcelotGetway.WebApiA.WebApiB   webapi项目.png OcelotGetway项目用于做Api网关 WebApiA.WebApiB作为两个api接口服务 2.在OcelotGetway项目的Nuget包管理器中搜索Ocelo…
本文介绍Ocelot中的请求头传递(Headers Transformation),其可以改变上游request传递给下游/下游response传递给上游的header. 1.修改ValuesController 修改WebApiA和WebApiB中ValuesController.Get()方法如下: [HttpGet] public IEnumerable<string> Get() { var headers = Request.Headers.Select(x => $"…
本文介绍Ocelot中的QoS(Quality of Service),其使用了Polly对超时等请求下游失败等情况进行熔断. 1.添加Nuget包 添加 Ocelot.Provider.Polly 到OcelotGetway项目中   nuget.png 2.修改 Startup.ConfigureServices 如下来添加Polly: services .AddOcelot(new ConfigurationBuilder() .AddJsonFile("configuration.jso…
Ocelot中使用 CacheManager 来支持缓存,官方文档中强烈建议使用该包作为缓存工具.以下介绍通过使用CacheManager来实现Ocelot缓存. 1.通过Nuget添加 Ocelot.Cache.CacheManager 包 在OcelotGetway项目中添加引用:   Add cache package.png 2.修改 Startup 中的 ConfigureServices 方法 修改如下: services .AddOcelot(new ConfigurationBu…
在实际的应用当中,经常会遇到同一个操作要请求多个api来执行.这里先假设一个应用场景:通过姓名获取一个人的个人信息(性别.年龄),而获取每种个人信息都要调用不同的api,难道要依次调用吗?在Ocelot中为我们提供了很好的解决方法. 路由聚合 继续使用前边的文章建立的项目,在WebApiA项目中添加一个新的WebApi控制器命名为UserController,代码如下: [Produces("application/json")] [Route("api/[controlle…