Ocelot(v7.0.6)使用小记
本次小记系列计划有如下内容
2、Swashbuckle.AspNetCore(v2.5.0)使用小记
3、Ocelot与Swashbuckle.AspNetCore集成使用小记
4、Consul使用小记
5、Nginx使用小记
6、IdentityServer4(2.2.0)使用小记
7、Dotnetcore.CAP使用小记
以上内容都是以《Ocelot(v7.0.6)使用小记》为基础的示例整合
========================================
本文不涉及任何概念,如果想了解Ocelot是什么,请自己在园子中搜索即可。
系统:Windows 10
IDE:vs2017最新版(截止到2018年7月)
SDK:.Net Core 2.1
涉及到的Nuget项目有:Ocelot(v7.0.6)
我们准备搭建2个WebAPI的空白项目
①DogService----用于被Ocelot访问
②CatService-----用于被Ocelot访问
我们现在开始建立第一个WebAPI的项目,如果下图所示
这里大家请注意,我现在使用的是asp.net core2.1版本的SDK,如果还是2.0版本的同学,强烈建议去下载2.1版本SDK
这里我们已经建立完了一个空的DogService的WebAPI项目了
我的VS可能是安装有问题,每次新建立的项目都会出现惊叹号,解决的方式是,关掉项目重新打开就好了,很奇怪。
现在我们建立第二个WebAPI的项目CatService,过程以及截图略过,跟DogService完全一样的流程
我们来修改一下默认生成的Controller控制器
我把原来values控制器里的默认方法都删除了,自己增加了一个Test方法,访问模式为POST,自定义的路由是api/findcat
我们来测试一下这个WebAPI能否正常访问,由于我使用的是POST的方式,所以我们来使用POSTMAN来进行访问测试
先通过命令行的方式运行这个CatService
显示的访问地址是 http://localhost:5000
接下来我们通过postman来访问一下这个地址,看看是否有正确的结果
结果是返回错误,没有得到任何信息,我们现在去startup代码片段里看一下
我们尝试着把使用https的这个设置去掉,继续在测试一下看是否好用
我们看到成功输出了 this is a cat 了,说明运行成功,然后我们通过同样的方式去测试一下DogService的WebAPI项目
我们看到DogService也成功运行了,好了,CatService与DotService已经准备完毕,接下来我们开始建立一个Gateway的项目(Ocelot)
我们右键点击GatewayAPI项目,选择管理Nuget程序包
我们查找Ocelot并且进行安装,安装量猛增啊,上周还是40K,本周就52K了,哈哈
如果中途出现了选择对话框,请选“我接受”即可。
如果出现以下提示,说明Ocelot安装成功了,我们进行下一步操作。
在GatewayAPI项目的startup文件的ConfigureServices方法中加入:services.AddOcelot(Configuration);
在GatewayAPI项目的startup文件的Configure方法中加入:app.UseOcelot().Wait();
我们在根目录新建一个名字叫做configuration.json的文件
下面是config文件的内容
{ "ReRoutes": [ //CatService { "DownstreamPathTemplate": "/api/findcat", //下游服务的访问路径 "DownstreamScheme": "http", //下游服务是http还是https "DownstreamHostAndPorts": [ //下游服务的地址以及端口号 { "Host": "localhost", //下游服务的地址 "Port": "6002" //下游服务的端口号 } ], "UpstreamPathTemplate": "/service/cat", //上游服务的访问路径 "UpstreamHttpMethod": [ "GET", "POST" ] //上游服务的访问模式,本例里只用到了POST }, //DogService { "DownstreamPathTemplate": "/api/finddog", "DownstreamScheme": "http", "DownstreamHostAndPorts": [ { "Host": "localhost", "Port": "6002" } ], "UpstreamPathTemplate": "/service/dog", "UpstreamHttpMethod": [ "GET", "POST" ] } ] } /* 上游与下游的解释: 上游:用户访问Ocelot网关时的操作称为上游访问 下游:Ocelot访问的具体WebAPI服务(本例中只用了WebAPI,当然还可能是其他类型服务)称为下游访问 */
现在我们的配置都已经完成了,在开始测试之前,我们需要修改一下CatService、DogService、GatewayAPI三个项目启动时绑定的地址+端口
下面们把之前增加的那个config.json文件通过代码加载到程序中
之后在config文件上点鼠标右键,右侧在复制到输出目录选项里选择如果较新则复制,然后确定保存即可
接下来我们通过dotnet命令的方式运行一下这3个程序,看一下效果
在使用dotnet命令运行之前,记得一定要把项目重新生成一下
首先启动的是DogService,看红线处的地址就是我们之前给定的地址
第二个启动的是CatService
第三个我们来启动GatewayAPI
GatewayAPI就是我们基于Ocelot的那个网关,我们使用http://localhost:6003/service/cat与http://localhost:6003/service/dog来尝试着访问一下,看是个什么效果
由于我们给定的是POST访问模式,所以使用POSTMAN来进行测试
我们看访问http://localhost:6003/service/dog 输出的结果为this is a dog
我们看访问http://localhost:6003/service/cat 输出的结果为this is a cat
本文是一个入门的初级小记,希望给没用过的Ocelot的同学们一个小小的帮助,也是对自己的一个使用回顾,祝各位同学身体健康,工作顺利
PS:认为0点睡觉是养生的大咔们滚远点