转载

作者:依乐祝(祝雷)

出处:https://www.cnblogs.com/yilezhu

联系:1015657114@qq.com .NET Core实战项目交流群:637326624 微信:jkingzhu

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如有问题或建议,请多多赐教,非常感谢。

原文地址:https://www.cnblogs.com/yilezhu/p/9839863.html

很多人都说配置文件的配置很繁琐,如果存储在数据库就方便很多,可以通过自定义UI界面在后台进行路由的配置,然后通过调用Administration API让修改后的路由规则立即生效。当然这都是后话了。今天就教你手把手的来把配置文件放到数据库中,然后在数据库中进行路由的配置。当然,我会在Github上开放源代码供大家参考。至于Nuget包的话,今天还没来得及弄,等明天晚上弄好,再发布Nuget包吧,今天先引用下源代码来使用吧。大家委屈一下吧。本文还是沿用之前的系列文章里面的Demo。所以可以先下载之前系列文章里面的Demo源码。https://github.com/yilezhu/OcelotDemo

实例教程集成步骤

  1. Github上下载重写的配置文件的源代码,地址:https://github.com/yilezhu/Ocelot.ConfigAuthLimitCache 然后把项目文件拷贝到。系列文章的源代码下面,并添加项目引用。如下所示:

项目添加进来后的结构如下所示:

  1. OcelotDemo网关项目作如下修改,Programs.cs文件移除对Ocelot.json文件的引用,因为配置文件的获取方式已经改成了从数据库中获取,所以,你需要新建一个数据库,然后执行数据库脚本创建数据库表,这里只给出Mssql的数据库脚本https://github.com/yilezhu/Ocelot.ConfigAuthLimitCache/blob/master/Ocelot.sql ,在项目源代码下面,大家自行下载。

  2. ConfigureServices服务中Ocelot的注入的同时需要注入我们的扩展方法,如下所示:

    services.AddOcelot()//注入Ocelot服务.AddAuthLimitCache(option=> {option.DbConnectionStrings = "Server=.;Database=Ocelot;User ID=sa;Password=1;";}).AddConsul();

    注意:这里需要传入SqlServer的数据库连接字符串,由于博主扩展使用的Dapper+MSSQL所以这里需要传入步骤1中创建的数据库的链接字符串。

  3. 我们在数据库中配置一个路由吧,如下所示:字段名称基本都是跟Ocelot原生配置名称一样,只是扩展了一些字段方便后期做限流的

    大家看到没有,这条路由的意思是接受/ss1/{通配符} 的路由,然后转到到下面就是/api/{通配符} 。

  4. 路由配置好了,那就让我们启动一下项目看下效果吧。

  5. 上面是正常的访问结果,当我们访问一个错误的路由的时候,再看看吧。

    看到没有,返回了404的状态码,感觉不够友好,所以,我们也进行了改造。直接看结果吧

  6. 为了看到效果,你需要在Configure中少做下修改

     app.UseAhphOcelot().Wait();
  7. 然后我们重新启动下Ocelot网关项目,重新访问下6中的Url吧。

    看到没有,返回的数据更友好,而且是200的状态。当然大家也可以忽略这个功能哈。

源码地址:

  1. Demo地址:https://github.com/yilezhu/OcelotDemo
  2. 扩展插件地址:https://github.com/yilezhu/Ocelot.ConfigAuthLimitCache

总结

本文主要通过实例讲述如何集成,将配置文件存储到数据库的插件。源码已经开源,今天暂时没有发布Nuget包,明天再发布吧。当然你可以自行扩展代码。实现你自己的业务。我把配置文件存储到数据库的目的就是方便后面做UI管理方便,还有就是可以基于这些路由在数据库中对每个客户端进行单独的限流。最后感谢大家的阅读。

Ocelot 网关搭建(二)相关推荐

  1. 微服务之:从零搭建ocelot网关和consul集群

    介绍 微服务中有关键的几项技术,其中网关和服务服务发现,服务注册相辅相成. 首先解释几个本次教程中需要的术语 网关 Gateway(API GW / API 网关),顾名思义,是企业 IT 在系统边界 ...

  2. .Net Core使用Ocelot网关(二) -鉴权认证

    前言 上一章.Net Core使用Ocelot网关(一) -负载,限流,熔断,Header转换 已经简单的介绍了ocelot的使用了,但是网关暴露的接口如果什么人都能访问的话安全性就太低啦.所以我们需 ...

  3. .Net Core with 微服务 - Ocelot 网关

    上一次我们通过一张架构图(.Net Core with 微服务 - 架构图)来讲述了微服务的结构,分层等内容.从现在开始我们开始慢慢搭建一个最简单的微服务架构.这次我们先用几个简单的 web api ...

  4. SpringCloud Zuul 网关搭建及配置

    目录 一.Zuul网关 二.Zuul服务的前期准备 2.1 注册中心EurekaServer的搭建 2.2 EurekaService的搭建 三.Zuul服务搭建 五.Zuul的访问 六.Zuul的更 ...

  5. .net core ocelot 获取路由的mothed_Net Core微服务入门全纪录(四)Ocelot网关(上)

    上一篇[.Net Core微服务入门全纪录(三)--Consul-服务注册与发现(下)]已经使用Consul完成了服务的注册与发现,实际中光有服务注册与发现往往是不够的,我们需要一个统一的入口来连接客 ...

  6. 【实战 Ids4】║ 控制台密码模式搭配Ocelot网关

    (此岁只能云赏樱了) 书接上文,这些天一直在研究IdentityServer4(下文简称Ids4)框架,发现有很多有意思,或者说比我想象中的知识点,可扩展的多,所以比较开心能钻研进去,就像当时学习AS ...

  7. Hi3519V101开发环境搭建(二)

    目录 目录 前言 编译U-boot 编译Linux-318y的内核 链接地址 前言 前面已经搭建好了Ubuntu下的海思开发环境,现在对编译Uboot和Kernel的过程做一个简单的记录.参考文档&l ...

  8. 原神私服搭建二: 搭建服务端

    原神私服搭建二: 搭建服务端 所需资源: 一:下载jar包 链接:https://github.com/Grasscutters/Grasscutter/releases 二:下载资源 resourc ...

  9. 【leafletjs】搭建二维地图

    基于leafletjs作为底层框架--搭建二维地图 1.加入依赖包 "leaflet": "^1.7.1", react-leaflet v.2.x中需引起的依 ...

最新文章

  1. electron.js_在使用Electron.js之前我希望知道的事情
  2. Ubuntu11.04软件源--增强版
  3. python判断题题库大数据技术_智慧树知到_大数据分析的python基础_选择题答案
  4. C#实现文本文件合并
  5. Java开源数据库管理工具
  6. NOI2013矩阵游戏
  7. linux ps top 命令 VSZ,RSS,TTY,STAT, VIRT,RES,SHR,DATA的含义
  8. 关于halcon多区域挑选有关算法的自我理解(tuple_sort_index)
  9. android p 权限控制,android 权限控制
  10. sql 查询结果为null替换 为 0
  11. 牛客网刷题(纯java题型 211~240题)
  12. mysql grant all privileges_MySQL数据备份及还原(一)
  13. python3.6安装pandas_python3.6更新pandas和numpy包
  14. window常用的『运行』命令
  15. Java基础知识总结(绝对经典)
  16. 软件测试工程师要具备哪些从业技能?
  17. jQuery图片播放插件ColorBox使用方法
  18. numpy.arctan, math.atan, math.atan2的区别
  19. 【华为云】磁盘挂载操作
  20. 基本概念学习(十)---系统

热门文章

  1. vue 文件目录详解
  2. Creo 9.0二维草图的诊断:着色封闭环
  3. 浙大计算机实验室详细推介
  4. 第三代酷睿i3处理器_10nm+新架构+Iris Plus核显 第十代酷睿到底有多强?
  5. 学习交换机的基础专业术语
  6. gava java_guava | 并发编程网 – ifeve.com
  7. 贝加莱学习笔记第四节
  8. ubuntu手动安装java与如何完全卸载Java
  9. gojs DiagramEvent 图表事件中文文档
  10. [MFC] 几种子控件半透明效果的实现办法