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

1、外部Identity Server

修改 Startup 中的 ConfigureServices 方法如下:

public void ConfigureServices(IServiceCollection services)
{
services.AddMvc(); void options(IdentityServerAuthenticationOptions o)
{
o.Authority = "http://localhost:6000";
o.RequireHttpsMetadata = false;
o.ApiName = "api1";
} services
.AddOcelot(new ConfigurationBuilder()
.AddJsonFile("configuration.json")
.Build())
.AddAdministration("/administration", options); services
.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddIdentityServerAuthentication("TestKey", options);
}

其中复用了Identity Server的配置。

2、内部Identity Server

修改 Startup 中的 ConfigureServices 方法如下:

public void ConfigureServices(IServiceCollection services)
{
services.AddMvc(); services.AddOcelot(new ConfigurationBuilder()
.AddJsonFile("configuration.json")
.Build())
.AddAdministration("/administration", "secret"); services
.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddIdentityServerAuthentication("TestKey", options =>
{
options.Authority = "http://localhost:6000";
options.RequireHttpsMetadata = false;
options.ApiName = "api1";
});
}

其中为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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

最新文章

  1. requirejs代码结构分析
  2. guardian keytab生成不了
  3. Unity3D热更新全书-何谓热更新,为何热更新,如何热更新
  4. mybatis动态SQL语句
  5. windows下安装RabbitMq-Service
  6. android SQLite(安卓数据库的插入显示删除)
  7. php定时执行脚本
  8. 解决Eclipse乱码的办法
  9. sql server 数据库 只有mdf文件,如何附加
  10. Android - 用Fragments实现动态UI - 创建灵活的UI
  11. NYOJ-102 次方求模
  12. NLP中的用N-gram语言模型做英语完型填空的环境搭建
  13. struts2的配置文件
  14. 国内各大支付平台的API地址
  15. docker容器日志收集方案(方案N,其他中间件传输方案)
  16. Assets Library开发总结
  17. for循环中变量的作用域问题
  18. python functools.wraps functools.partial实例解析
  19. Get package name
  20. AJAX里使用的弹窗样式 tanchuang.js tanchuang.css

热门文章

  1. 关键字final 修饰类、方法、属性、参数类型
  2. 打包完的rcp产品svn不储存密码问题
  3. python通用分页功能
  4. SIGAI深度学习第七集 卷积神经网络1
  5. 024_统计/var/log 有多少个文件,并显示这些文件名
  6. python 比较运算符
  7. access函数
  8. vim 操作命令
  9. Hadoop Shell命令字典
  10. springboot+mybatis+druid+sqlite/mysql/oracle