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

做者:依乐祝
原文地址:http://www.javashuo.com/article/p-bycbsvjo-x.htmljavascript

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

实例教程集成步骤

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

    1540302626763

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

1540302716406

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

  2. ConfigureServices服务中Ocelot的注入的同时须要注入咱们的扩展方法,以下所示:sql

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

    注意:这里须要传入SqlServer的数据库链接字符串,因为博主扩展使用的Dapper+MSSQL因此这里须要传入步骤1中建立的数据库的连接字符串。数据库

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

    1540303270834

    你们看到没有,这条路由的意思是接受/ss1/{通配符} 的路由,而后转到到下面就是/api/{通配符} 。c#

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

    1540303513128

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

    1540304187258

    看到没有,返回了404的状态码,感受不够友好,因此,咱们也进行了改造。直接看结果吧

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

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

    1540304235799

    看到没有,返回的数据更友好,并且是200的状态。固然你们也能够忽略这个功能哈。

源码地址:

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

总结

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

 

做者:依乐祝

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

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

本文版权归做者和博客园共有,欢迎转载,但未经做者赞成必须保留此段声明,且在文章页面明显位置给出原文链接,不然保留追究法律责任的权利。若有问题或建议,请多多赐教,很是感谢。
DotNetCore实战
相关文章
相关标签/搜索