作者:依乐祝
原文地址: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 然后把项目文件拷贝到。系列文章的源代码下面,并添加项目引用。如下所示:

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

  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管理方便,还有就是可以基于这些路由在数据库中对每个客户端进行单独的限流。最后感谢大家的阅读。

作者:依乐祝

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

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

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

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

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

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

  2. [转载]Ocelot简易教程(五)之集成IdentityServer认证以及授权

    作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9807125.html 最近比较懒,所以隔了N天才来继续更新第五篇Ocelot简易教程,本篇教程会先简单介 ...

  3. [转载]Ocelot简易教程(三)之主要特性及路由详解

    上篇<Ocelot简易教程(二)之快速开始2>教大家如何快速跑起来一个ocelot实例项目,也只是简单的对Ocelot进行了配置,这篇文章会给大家详细的介绍一下Ocelot的配置信息.希望 ...

  4. [转载]Ocelot简易教程(一)Ocelot是什么

    Ocelot简易教程(一)Ocelot是什么 简单的说Ocelot是一个用.NET Core实现并且开源的API网关技术. 可能你又要问了,什么是API网关技术呢?Ocelot又有什么特别呢?我们又该 ...

  5. [转载]Ocelot简易教程(二)之快速开始2

    为什么这篇的标题叫“Ocelot简易教程(二)之快速开始2”呢,因为很多朋友跟我说上一篇“ Ocelot简易教程(二)之快速开始1”内容太少了,只是简单介绍Ocelot的一些简单配置,让Ocelot能 ...

  6. [转载]Ocelot简易教程(四)之请求聚合以及服务发现

    上篇文章给大家讲解了Ocelot的一些特性并对路由进行了详细的介绍,今天呢就大家一起来学习下Ocelot的请求聚合以及服务发现功能.希望能对大家有所帮助. 作者:依乐祝 原文地址:https://ww ...

  7. [转载]Ocelot简易教程(二)之快速开始1

    Ocelot是为.net core量身定做的,目前是基于 netstandard2.0进行构建的. .NET Core 2.1中如何使用呢? 安装NuGet package 使用nuget安装Ocel ...

  8. Ocelot简易教程(七)之配置文件数据库存储插件源码解析

    作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9852711.html 上篇文章给大家分享了如何集成我写的一个Ocelot扩展插件把Ocelot的配置存储 ...

  9. Ocelot简易教程(五)之集成IdentityServer认证以及授权

    Ocelot简易教程目录 Ocelot简易教程(一)之Ocelot是什么 Ocelot简易教程(二)之快速开始1 Ocelot简易教程(二)之快速开始2 Ocelot简易教程(三)之主要特性及路由详解 ...

随机推荐

  1. 03011_预处理对象executeUpdate方法(实现数据库的增、删、改)

    1.概述 (1)通过预处理对象的executeUpdate方法,完成记录的insert\update\delete语句的执行: (2)操作格式统一如下: ①注册驱动: ②获取连接: ③获取预处理对象: ...

  2. 【Henu ACM Round #12 A】 Grandma Laura and Apples

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 知道题意之后就是一个模拟的过程了. 用int now记录当前苹果的个数.bool flag记录是否有小数(即半个苹果) (这样处理为 ...

  3. 【翻译自mos文章】OGG的集成捕捉模式支持Oracle database标准版么?

    OGG的集成捕捉模式支持Oracle database标准版么? 来源于: Does OGG 11.2.1 Integrated Capture Work with Oracle Database S ...

  4. 微软自拍应用iOS版公布

    微软自拍(Microsoft Selfie)主要是支持自拍后还能加强自拍效果的功能. 只是和其它自拍应用不同的是.Microsoft Selfie 利用了机器学习来增强照片,应用会"考虑年龄 ...

  5. 用 runcloud.io 免费部署、优化管理你的多个VPS( 目前支持 Ubuntu 16.04 )

    使用RunCloud.io轻松实现Web部署 使用VPS.云服务器,通常会安装基本的操作系统,之后必须自己安装Apache,MySQL,PHP,尤其是服务器的性能优化,这对大多数人来说可能是非常具有挑 ...

  6. JVM 基础知识(GC)

    几年前写过一篇关于JVM调优的文章,前段时间拿出来看了看,又添加了一些东西.突然发现,基础真的很重要.学习的过程是一个由表及里,再由里及表的过程,所谓的"温故而知新".而真正能走完 ...

  7. 高中生活-第9篇-开学之初的“失足”囧事,"刻舟求剑"导致腿折了

    时间过得好快啊,上次发表"高中生活-第8篇:夏天的空调,冬天的味道"是2014年9月30日,一转眼,就是一年啊. 我自己以为,很多人可能都以为,我又半途而废了,实则不是哦~ 行百里 ...

  8. Linux 进程通信之管道

    管道是单向的.先进先出的,它把一个进程的输出和还有一个进程的输入连接在一起.一个进程(写进程)在管道的尾部写入数据,还有一个进程(读进程)从管道的头部读出数据.数据被一个进程读出后,将被从管道中删除, ...

  9. 用电脑从Google Play下载apk

    用电脑从Google Play下载apk 方法一:给Chrome浏览器安装apk-downloader插件,需禁止 SSL 错误警告,即在Chrome的快捷方式上加入"--ignore-ce ...

  10. Flask项目之手机端租房网站的实战开发(八)

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 接着上一篇博客继续往下写 :https://blog.csdn.net/qq_41782425/article/details/8 ...