1首先创建一个json的配置文件,文件名随便取,我取Ocelot.json

这个配置文件有两种配置方式,第一种,手动填写 服务所在的ip和端口;第二种,用Consul进行服务发现

第一种如下:

{
"ReRoutes": [
{
//转发处理格式
"DownstreamPathTemplate": "/api/{url}",
"DownstreamScheme": "http",
//手动指明ip和端口号
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port":
}
],
//请求格式
"UpstreamPathTemplate": "/Ocelot_Consul_Service/{url}",
"UpstreamHttpMethod": [ "Get", "Post" ]
}
]
//例如,我的Ocelot ip是127.0.0.1 端口是8888的情况下,
//我请求的是localhost:8888/Ocelot_Consul_Service/values
//会被转到localhost 的6001端口 6001端口对应的是 Ocelot_Consul_Service 对应的webapi
//请求转后的路径是:localhost:6001/api/Ocelot_Consul_Service/values
}

第二种如下:

{
"ReRoutes": [
{
"DownstreamPathTemplate": "/api/{url}",
"DownstreamScheme": "http", "UpstreamPathTemplate": "/Ocelot_Consul_Service/{url}",
"UpstreamHttpMethod": [ "Get", "Post" ],
//指明服务名
"ServiceName": "Ocelot_Consul_Service",
//指明负载平衡方式
"LoadBalancerOptions": {
"Type": "RoundRobin" //轮询
},
//使用服务发现
"UseServiceDiscovery": true
} ],
//全局配置
"GlobalConfiguration": {
//服务发现的提供者
"ServiceDiscoveryProvider": {
//ip
"Host": "localhost",
//端口
"Port": ,
//由Consul提供服务发现
"Type": "Consul"
}
}
}

2.接下来我们要安装Ocelot  install-package Ocelot

3.安装完毕 要在Program.cs文件中使用第一步中创建的json文件,把它读到配置里面去。

public static IWebHostBuilder CreateWebHostBuilder(string[] args)
{
//解析出从控制台传入的ip和端口号
var config = new ConfigurationBuilder()
.AddCommandLine(args)
.Build();
string ip = config["ip"];
string port = config["port"]; return WebHost.CreateDefaultBuilder(args)
.UseUrls($"http://{ip}:{port}")
//注册应用配置
.ConfigureAppConfiguration((hostingContext,builder)=> {
//false 此文件是否是可选的,不是!true 如果此文件被修改了是否重新加载 是!
builder.AddJsonFile("Ocelot.json", false, true);
})
.UseStartup<Startup>();
}

4.在启动类(startup.cs)文件中添加Ocelot服务

public void ConfigureServices(IServiceCollection services)
{
//这个AddOcelot方法是Ocelot包给IServiceCollection扩展的方法
//如果不使用Consul进行服务发现,只需要services.AddOcelot(configuration)即可
//但是如果使用Consul进行服务发现 后面还要AddConsul()
//要使用AddConsul()必须安装包 Ocelot.Provider.Consul
services.AddOcelot(configuration).AddConsul();
}

一定要注意第4步,使用Consul做服务发现要安装 Ocelot.Provider.Consul 包 并AddConsul()。在实际中 我们要尽量要用Consul进行服务发现。

附上Ocelot文档截图一张如下:

使用Ocelot做网关的更多相关文章

  1. .Netcore 2.0 Ocelot Api网关教程(7)- 限流

    本文介绍Ocelot中的限流,限流允许Api网关控制一段时间内特定api的总访问次数.限流的使用非常简单,只需要添加配置即可. 1.添加限流 修改 configuration.json 配置文件,对  ...

  2. ASP.NET Core on K8S学习之旅(13)Ocelot API网关接入

    本篇已加入<.NET Core on K8S学习实践系列文章索引>,可以点击查看更多容器化技术相关系列文章. 上一篇介绍了Ingress的基本概念和Nginx Ingress的基本配置和使 ...

  3. Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权(四)

    在上一讲中,我们已经完成了一个完整的案例,在这个案例中,我们可以通过Angular单页面应用(SPA)进行登录,然后通过后端的Ocelot API网关整合IdentityServer4完成身份认证.在 ...

  4. Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权(一)

    好吧,这个题目我也想了很久,不知道如何用最简单的几个字来概括这篇文章,原本打算取名<Angular单页面应用基于Ocelot API网关与IdentityServer4+ASP.NET Iden ...

  5. Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权(二)

    上文已经介绍了Identity Service的实现过程.今天我们继续,实现一个简单的Weather API和一个基于Ocelot的API网关. 回顾 <Angular SPA基于Ocelot ...

  6. Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权(三)

    在前面两篇文章中,我介绍了基于IdentityServer4的一个Identity Service的实现,并且实现了一个Weather API和基于Ocelot的API网关,然后实现了通过Ocelot ...

  7. 微服务(入门三):netcore ocelot api网关结合consul服务发现

    简介 api网关是提供给外部调用的统一入口,类似于dns,所有的请求统一先到api网关,由api网关进行指定内网链接. ocelot是基于netcore开发的开源API网关项目,功能强大,使用方便,它 ...

  8. .Netcore 2.0 Ocelot Api网关教程(6)- 配置管理

    本文介绍Ocelot中的配置管理,配置管理允许在Api网关运行时动态通过Http Api查看/修改当前配置.由于该功能权限很高,所以需要授权才能进行相关操作.有两种方式来认证,外部Identity S ...

  9. .Netcore 2.0 Ocelot Api网关教程(2)- 路由

    .Netcore 2.0 Ocelot Api网关教程(1) 路由介绍 上一篇文章搭建了一个简单的Api网关,可以实现简单的Api路由,本文介绍一下路由,即配置文件中ReRoutes,ReRoutes ...

随机推荐

  1. Spring 使用Cache(转)

    从3.1开始Spring引入了对Cache的支持.其使用方法和原理都类似于Spring对事物管理的支持.Spring Cache是作用在方法上的,其核心思想是:当我们在调用一个缓存方法时会把该方法参数 ...

  2. [RxJS] BehaviorSubject: representing a value over time

    When an Observer subscribe to a BehaviorSubject. It receivces the last emitted value and then all th ...

  3. License控制实现原理(20140808)

    近期须要做一个License控制的实现,做了一个设计,设计图例如以下: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGVjX2Zlbmc=/font/5 ...

  4. [Swift] Storyboard outlet and action

    To programmaictlly change the content of app, we need to contect storyboard to a view controller. To ...

  5. jQuery 中 is() 函数常见使用方法

    依据选择器.DOM元素或 jQuery 对象来检測匹配元素集合.假设当中至少有一个元素符合这个给定的表达式就返回true. 假设没有元素符合,或者表达式无效.都返回'false'. '''注意:''' ...

  6. Qt元类型(MetaType)注册门(使用qRegisterMetaType注册错误等级)

    昨天调试项目时,突然发现如下消息: QObject::connect: Cannot queue arguments of type 'ERROR_LEVEL' (Make sure 'ERROR_L ...

  7. 【读书笔记与思考】Andrew 机器学习课程笔记

    Andrew 机器学习课程笔记 完成 Andrew 的课程结束至今已有一段时间,课程介绍深入浅出,很好的解释了模型的基本原理以及应用.在我看来这是个很好的入门视频,他老人家现在又出了一门 deep l ...

  8. Hook技术简介(有用SDK写的例子)

    钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的.当消息到达后,在目标窗口处理函数之前处理它.钩子机 ...

  9. js进阶正则表达式7点数字字母空格(w d s)(小写表原意,大写表反义)(特殊字符要加反斜杠:var reg22=/\W/g)

    js进阶正则表达式7点数字字母空格(w d s)(小写表原意,大写表反义)(特殊字符要加反斜杠:var reg22=/\W/g) 一.总结 1.w d s,word digital space 2.特 ...

  10. Deepin系统更新apt-get源

    1.复制原文件备份sudo cp /etc/apt/source.list /etc/apt/source.list.bak2.编辑源列表文件sudo vim /etc/apt/source.list ...