Ocelot简易教程(六)之重写配置文件存储方式并优化响应数据

简介: 本来这篇文章在昨天晚上就能发布的,悲剧的是写了两三千字的文章居然没保存,结果我懵逼了。今天重新来写这篇文章。今天我们就一起来探讨下如何重写Ocelot配置文件的存储方式以及获取方式。 作者:依乐祝原文地址:https://www.cnblogs.com/yilezhu/p/9807125.html 很多人都说配置文件的配置很繁琐,如果存储在数据库就方便很多,可以通过自定义UI界面在后台进行路由的配置,然后通过调用Administration API让修改后的路由规则立即生效。

本来这篇文章在昨天晚上就能发布的,悲剧的是写了两三千字的文章居然没保存,结果我懵逼了。今天重新来写这篇文章。今天我们就一起来探讨下如何重写Ocelot配置文件的存储方式以及获取方式。

作者:依乐祝
原文地址:https://www.cnblogs.com/yilezhu/p/9807125.html

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

实例教程集成步骤

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

1540302626763

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

1540302716406

  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中创建的数据库的链接字符串。

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

1540303270834

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

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

1540303513128

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

1540304187258

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

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

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

1540304235799

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

源码地址:

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

总结

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

Ocelot简易教程目录

  1. Ocelot简易教程(一)之Ocelot是什么
  2. Ocelot简易教程(二)之快速开始1
  3. Ocelot简易教程(二)之快速开始2
  4. Ocelot简易教程(三)之主要特性及路由详解
  5. Ocelot简易教程(四)之请求聚合以及服务发现
  6. Ocelot简易教程(五)之集成IdentityServer认证以及授权
  7. Ocelot简易教程(六)之重写配置文件存储方式并优化响应数据
  8. Ocelot简易教程(七)之配置文件数据库存储插件源码解析
目录
相关文章
|
存储 数据库 文件存储
Ocelot简易教程(七)之配置文件数据库存储插件源码解析
作者:依乐祝原文地址:https://www.cnblogs.com/yilezhu/p/9852711.html 上篇文章给大家分享了如何集成我写的一个Ocelot扩展插件把Ocelot的配置存储到数据库中。
1376 0
|
5月前
|
缓存 NoSQL Java
后端开发中缓存的作用以及基于Spring框架演示实现缓存
后端开发中缓存的作用以及基于Spring框架演示实现缓存
48 1
|
5月前
|
安全 前端开发 测试技术
安全开发-PHP应用&模版引用&Smarty渲染&MVC模型&数据联动&RCE安全&TP框架&路由访问&对象操作&内置过滤绕过&核心漏洞
安全开发-PHP应用&模版引用&Smarty渲染&MVC模型&数据联动&RCE安全&TP框架&路由访问&对象操作&内置过滤绕过&核心漏洞
|
存储 NoSQL 算法
文件上传下载系列——如何实现文件秒传
文件上传下载系列——如何实现文件秒传
|
11月前
|
缓存 NoSQL 关系型数据库
缓存的设计方式
缓存的设计方式
|
存储 缓存 JSON
php开发实战分析(6):配置文件或缓存文件的生成与调用
php开发实战分析(6):配置文件或缓存文件的生成与调用
168 0
|
XML JSON 人工智能
springboot工程中调用第三方接口json数据定时存入数据库
springboot工程中调用第三方接口json数据定时存入数据库
|
缓存 前端开发 JavaScript
如何优化Yii2视图文件的加载速度?具体步骤是怎样的?底层原理是什么?
如何优化Yii2视图文件的加载速度?具体步骤是怎样的?底层原理是什么?
154 0
|
XML 缓存 NoSQL
分布式服务器框架之Server.Common中通过Xml配置渠道、服务器集群、热更新信息代码解析Xml缓存进内存
ChannelConfig.cs代码解析加载ChannelConfig.xml。使用了System.Xml.Linq的XDocument工具类来加载xml文件。其基本原理就是获取到Root节点下名为“Channel”的所有Element节点,然后使用迭代器循环,拿到每一个Element中的属性,先缓存ChannelEntity结构中,最后存到字典里。
|
XML Java 应用服务中间件
自定义框架_解析请求 | 学习笔记
快速学习自定义框架_解析请求,介绍了自定义框架_解析请求系统机制, 以及在实际应用过程中如何使用。
下一篇
无影云桌面