本文介绍Ocelot中的配置管理,配置管理允许在Api网关运行时动态通过Http Api查看/修改当前配置。由于该功能权限很高,所以需要授权才能进行相关操作。有两种方式来认证,外部Identity Server或内部Identity Server。

1、外部Identity Server

修改 Startup 中的 ConfigureServices 方法如下:

  1. public void ConfigureServices(IServiceCollection services)
  2. {
  3. services.AddMvc();
  4. void options(IdentityServerAuthenticationOptions o)
  5. {
  6. o.Authority = "http://localhost:6000";
  7. o.RequireHttpsMetadata = false;
  8. o.ApiName = "api1";
  9. }
  10. services
  11. .AddOcelot(new ConfigurationBuilder()
  12. .AddJsonFile("configuration.json")
  13. .Build())
  14. .AddAdministration("/administration", options);
  15. services
  16. .AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
  17. .AddIdentityServerAuthentication("TestKey", options);
  18. }

其中复用了Identity Server的配置。

2、内部Identity Server

修改 Startup 中的 ConfigureServices 方法如下:

  1. public void ConfigureServices(IServiceCollection services)
  2. {
  3. services.AddMvc();
  4. services.AddOcelot(new ConfigurationBuilder()
  5. .AddJsonFile("configuration.json")
  6. .Build())
  7. .AddAdministration("/administration", "secret");
  8. services
  9. .AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
  10. .AddIdentityServerAuthentication("TestKey", options =>
  11. {
  12. options.Authority = "http://localhost:6000";
  13. options.RequireHttpsMetadata = false;
  14. options.ApiName = "api1";
  15. });
  16. }

其中为secret值为"secret",后边会用得到。

其上为添加配置管理的两种方式,本例中以内部Identity Server为例。

Administration一共提供了3组Api

  • Token获取
  • 配置管理
  • 缓存管理
    其中Token获取Api只在使用内部Identity Server时有效。由于缓存的教程还没更新,所以缓存管理的Api在后边的文章介绍。

1、Token获取

使用Postman请求http://localhost:5000/administration/connect/token如下所示,可以获得一个token

 
token from internal id server.png

注意Body的数据类型要选择 form-data,并且 client_secret 要填写代码中配置的secret,当前教程为secret。

2、配置管理

使用Postman请求http://localhost:5000/administration/configuration如下所示,获取配置

 
get configuration.png

使用上次获取的token。

http://localhost:5000/GetUserInfo?name=Jonathan为例请求数据如下

 
GetUserInfo.png

可以成功请求并且获取数据。

然后修改配置如下

 
change configuration.png

注意此次请求为Post请求,并且不要忘记添加认证头token,此次请求的body参数为之前获取的配置并且修改了/GetUserInfo链接为/GetUserInfochanged。
再次使用Postman请求http://localhost:5000/GetUserInfo?name=Jonathan如下

 
GetUserInfo 404.png

得到了404,修改链接为http://localhost:5000/GetUserInfochanged?name=Jonathan再次请求如下

 
GetUserInfochanged.png

此次配置修改成功,打开到路径/OcelotTutorial/OcelotGetway/bin/Debug/netcoreapp2.0下有一个 configuration.Development.json 文件打开查看如下

 
configuration.Development.json.png

配置文件也已经修改。
可能在开发时会遇到修改完配置之后,下次调试时配置又回到了原来,是因为 configuration.json 选择成了总是复制,所以每次开始调试的时候都会替换 configuration.development.json 中的内容。
如果Ocelot Api网关程序没有读写文件的权限也会遇到修改配置失败的情况。
源码下载

完,下一篇介绍限流

作者:Weidaicheng
链接:https://www.jianshu.com/p/9e2fa5783211
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

.Netcore 2.0 Ocelot Api网关教程(6)- 配置管理的更多相关文章

  1. .Netcore 2.0 Ocelot Api网关教程(2)- 路由

    .Netcore 2.0 Ocelot Api网关教程(1) 路由介绍 上一篇文章搭建了一个简单的Api网关,可以实现简单的Api路由,本文介绍一下路由,即配置文件中ReRoutes,ReRoutes ...

  2. .Netcore 2.0 Ocelot Api网关教程(7)- 限流

    本文介绍Ocelot中的限流,限流允许Api网关控制一段时间内特定api的总访问次数.限流的使用非常简单,只需要添加配置即可. 1.添加限流 修改 configuration.json 配置文件,对  ...

  3. .Netcore 2.0 Ocelot Api网关教程(5)- 认证和授权

    本文介绍Ocelot中的认证和授权(通过IdentityServer4),本文只使用最简单的IdentityServer,不会对IdentityServer4进行过多讲解. 1.Identity Se ...

  4. .Netcore 2.0 Ocelot Api网关教程(1)- 入门

    Ocelot(Github)Ocelot官方文档(英文)本文不会介绍Api网关是什么以及Ocelot能干什么需要对Api网关及Ocelot有一定的理论了解 开始使用Ocelot搭建一个入门级Api网关 ...

  5. .Netcore 2.0 Ocelot Api网关教程(10)- Headers Transformation

    本文介绍Ocelot中的请求头传递(Headers Transformation),其可以改变上游request传递给下游/下游response传递给上游的header. 1.修改ValuesCont ...

  6. .Netcore 2.0 Ocelot Api网关教程(9)- QoS

    本文介绍Ocelot中的QoS(Quality of Service),其使用了Polly对超时等请求下游失败等情况进行熔断. 1.添加Nuget包 添加 Ocelot.Provider.Polly  ...

  7. .Netcore 2.0 Ocelot Api网关教程(4)- 服务发现

    本文介绍Ocelot中的服务发现(Service Discovery),Ocelot允许指定一个服务发现提供器,之后将从中寻找下游服务的host和port来进行请求路由.关于服务发现的详细介绍请点击. ...

  8. .Netcore 2.0 Ocelot Api网关教程(8)- 缓存

    Ocelot中使用 CacheManager 来支持缓存,官方文档中强烈建议使用该包作为缓存工具.以下介绍通过使用CacheManager来实现Ocelot缓存. 1.通过Nuget添加 Ocelot ...

  9. .Netcore 2.0 Ocelot Api网关教程(3)- 路由聚合

    在实际的应用当中,经常会遇到同一个操作要请求多个api来执行.这里先假设一个应用场景:通过姓名获取一个人的个人信息(性别.年龄),而获取每种个人信息都要调用不同的api,难道要依次调用吗?在Ocelo ...

随机推荐

  1. 1114 CSS基础

    目录 CSS入门 标签设置长宽 1.字体样式 1.1 字体类型 font-family 1.2 字体大小 font-size 1.3 字体颜色 color 1.4 字体粗细 font-weight 1 ...

  2. js 同步 异步 宏任务 微任务 文章分享

    分享一篇 写的很好的 宏任务 微任务  同步异步的文章 文章原地址: https://juejin.im/post/59e85eebf265da430d571f89 这一次,彻底弄懂 JavaScri ...

  3. c#winform多线程感想

    我很菜所以好好学!!! 最近在做一个关于识别的项目,手动识别和自动识别,为了更好的保证自动识别不会引起界面的卡顿等现象,所以简单的学习了一下多线程,也只是入门但还是记录一下. 一.首先了解一下用多线程 ...

  4. [HTML5] Add Semantic Styling to the Current Page of a Navigation Item with aria-current

    In this lesson, we are going to use aria-current to give a screen reader user more context about wha ...

  5. P2461 [SDOI2008]递归数列 矩阵乘法+构造

    还好$QwQ$ 思路:矩阵快速幂 提交:1次 题解: 如图: 注意$n,m$如果小于$k$就不要快速幂了,直接算就行... #include<cstdio> #include<ios ...

  6. Shell 06 awk

    一.基本操作方法 ######################################### grep 按行进行查找 vim  编辑文档,交互式 ####################### ...

  7. java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK

    在pom.xml文件中添加如下依赖: <!-- https://mvnrepository.com/artifact/cn.easyproject/orai18n --> <depe ...

  8. 洛谷P1860 新魔法药水

    洛谷题目链接 动态规划: 这个题目调了我好久....结果循环变量写错了... 而且题目有个坑!!!只能用开始给你的$v$元买入东西 回归正题: 我们定义状态$ans[i][j]$表示第$i$个物品用了 ...

  9. java 生成随机数 自定义

    public static void main(String[] args) { int max=10000; int min=1000; Random random = new Random(); ...

  10. Hdu5178

    Hdu5178 题意: 题目给你N个点,问有多少对点的长度小于K . 解法: 首先将所给的坐标从大到小排序,则此题转化为:对排序后的新数列,对每个左边的\(x_a\)找到它右边最远的 $ x_b $ ...