Ocelot(v7.0.6)使用小记

本次小记系列计划有如下内容

1、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点睡觉是养生的大咔们滚远点

 

posted @ 2018-07-06 09:17  winljlj  阅读(711)  评论(0编辑  收藏  举报