zoukankan      html  css  js  c++  java
  • 一日一技:ASP.NET Core Api网关Ocelot初探

    概述

    Ocelot面向使用.NET运行微型服务/面向服务的体系结构的人员,这些体系结构需要在系统中具有统一的入口点。特别是我想与IdentityServer参考和承载令牌轻松集成。Ocelot是按特定顺序排列的一堆中间件。Ocelot将HttpRequest对象操作到由其配置指定的状态,直到到达请求构建器中间件,在该中间件中它创建一个HttpRequestMessage对象,该对象用于向下游服务发出请求。发出请求的中间件是Ocelot管道中的最后一件事。它不会调用下一个中间件。有一块中间件可将HttpResponseMessage映射到HttpResponse对象,然后将其返回给客户端。基本上,它具有许多其他功能。

    代码实现

    1、新建api客户端1

     2、新建api 网关test

     3、nuget安装Ocelot

    4、Program文件添加ConfigureAppConfiguration

     public class Program
        {
            public static void Main(string[] args)
            {
                CreateHostBuilder(args).Build().Run();
            }
    
            public static IHostBuilder CreateHostBuilder(string[] args) =>
                Host.CreateDefaultBuilder(args)
                .ConfigureAppConfiguration(conf =>
                {
                    conf.AddJsonFile("ocelot.json", false, true);
                })
                    .ConfigureWebHostDefaults(webBuilder =>
                    {
                        webBuilder.UseStartup<Startup>();
                    });
        }

    5、Startup文件配置

      services.AddOcelot(Configuration);
       app.UseOcelot().Wait();

    6、网关项目下添加文件ocelot.json

    {
      "ReRoutes": [
        {
          "DownstreamPathTemplate": "/api/WeatherForecast/GetList",
          "DownstreamScheme": "http",
          "DownstreamHostAndPorts": [
            {
              "Host": "localhost",
              "Port": 5000
            }
          ],
          "UpstreamPathTemplate": "/GetList",
          "UpstreamHttpMethod": [ "Get" ]
        },
    
        {
          "DownstreamPathTemplate": "/{everything}",
          "DownstreamScheme": "http",
          "DownstreamHostAndPorts": [
            {
              "Host": "localhost",
              "Port": 5000
            }
          ],
          "UpstreamPathTemplate": "/{everything}",
          "UpstreamHttpMethod": [ "Post" ]
        },
        {
          "DownstreamPathTemplate": "/api/WeatherForecast/GetModel?id={s1}",
          "DownstreamScheme": "http",
          "DownstreamHostAndPorts": [
            {
              "Host": "localhost",
              "Port": 5000
            }
          ],
          "UpstreamPathTemplate": "/GetModel?id={s1}",
          "UpstreamHttpMethod": [ "Get" ]
        }
      ]
    }

    7、2个项目运行,测试

    代码地址

    https://gitee.com/conanOpenSource_admin/Example/commit/b3b5a6b15a060b46c5ecd2ea31f0d36791cda18c

  • 相关阅读:
    稀疏自编码器一览表
    ZOJ 3886 Nico Number(筛素数+Love(线)Live(段)树)
    K好数(DP)
    【BZOJ4025】二分图
    又一次认识java(七) ---- final keyword
    二分查找
    从朴素贝叶斯分类器到贝叶斯网络(下)
    最近感到深深的绝望,感觉自己太菜了
    leetcode No.19 删除链表的倒数第N个节点 (python3实现)
    leetcode No.94 二叉树的中序遍历 (python3实现)
  • 原文地址:https://www.cnblogs.com/lyl6796910/p/14521929.html
Copyright © 2011-2022 走看看