最近因工作需要,开始学习Ocelot。首先简单介绍一下,Ocelot是一个基于.net core的开源webapi 服务网关项目,目前已经支持了IdentityServer认证。根据 作者介绍,Ocelot本质上是一堆中间件的集合,当HttpRequest请求到达后由一堆中间件进行处理,处理完毕,请求根据配置转发给下游服务。然后接受下游服务的返回信息在转发给客户端,详细信息请参考作者给出的文档。

  GitHub地址:https://github.com/TomPallister/Ocelot

  先简单介绍下,如何搭建一个Ocelot项目。

  首先,新建一个基于.net core的webapi项目, core版本要高于或等于1.1,因为目前Ocelot是基于.net core1.1

  然后可以通过nuget安装Ocelot

Install-Package Ocelot

  至此,项目搭建完毕。下面,在项目中添加 configuration.json 配置文件。Ocelot主要功能都是通过配置项来实现的。首先,我们来实现最简单的服务转发功能。配置文件中有两个配置项,一个是ReRoutes主要的服务路由配置,都配置在此配置项中。一个GlobalConfiguration,全局配置项,一些可应用与全局的配置可放在此配置项中。

  

"ReRoutes": [
{
"DownstreamPathTemplate": "/api/values",
"DownstreamScheme": "http",
"DownstreamPort": ,
"DownstreamHost": "localhost",
"UpstreamPathTemplate": "/api/values",
"UpstreamHttpMethod": [ "Get" ],
"QoSOptions": {
"ExceptionsAllowedBeforeBreaking": ,
"DurationOfBreak": ,
"TimeoutValue":
}
},
{
"DownstreamPathTemplate": "/api/product",
"DownstreamScheme": "http",
"DownstreamPort": ,
"DownstreamHost": "localhost",
"UpstreamPathTemplate": "/api/product",
"UpstreamHttpMethod": [ "Get" ],
"QoSOptions": {
"ExceptionsAllowedBeforeBreaking": ,
"DurationOfBreak": ,
"TimeoutValue":
}
}
],
"GlobalConfiguration": {
}

  配置项完毕后,现在需要修改Startup中的代码

  

  将刚新建的json文件,添加到系统配置项中。然后简单修改一下ConfigureServices和Configure,主要就是将Ocelot作为中间件注册。当然你可以按照自己的需求,做更多的扩展。

  

    Program.cs 类文件代码

   

    至此,全部工作已经完成。然后我们新建两个api服务,对应configuration.json文件中的下游服务。

    

    然后依次启动 apinoe,apitwo,和ServcesGateWay,即可看到结果

    

    

  

最新文章

  1. Java-使用二叉树实现快速排序-遁地龙卷风
  2. Atom编辑器添加eclipse快捷键
  3. JPush集成
  4. 编码Q&A
  5. HTML页面处理以及资源文件的加载
  6. iOS获取汉字的拼音
  7. debian 颜色设置
  8. DOM操作--表格点击行变色
  9. HDU 5890 Eighty seven
  10. win7下sublime text3 安装Emmet的pyv8
  11. Java温故而知新-冒泡法排序
  12. layer子层给父层页面元素赋值,以达到向父层页面传值的效果
  13. Pycharm 常用快捷键
  14. MFC打印
  15. Python爬虫【实战篇】百度翻译
  16. 基于前后端分离的身份认证方式——JWT
  17. 关于并查集的路径压缩(Path Compress)优化
  18. thinkphp 多图片上传 单图片上传
  19. OpenLdap 对接内部系统(Gitlab+Wiki+Jumpserver+Openvpn)配置
  20. javascript实现一行文字随不同设备自适应改变字体大小至字数完全展示

热门文章

  1. Canvas动画基础之碰撞检测
  2. java命令行导出、导入sql文件
  3. Dart:1.Dart开发环境配置
  4. GO基础之流程控制语句
  5. web前端面试题(含答案)
  6. Linux系统 /etc目录下主要配置文件解释
  7. Django中ORM的优化
  8. Docker 实战—使用 Dockerfile 构建镜像
  9. Linux文件同步工具之rsync
  10. Stringbuilder常用方法