iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >ASP.NETCore为Ocelot网关配置Swagger
  • 447
分享到

ASP.NETCore为Ocelot网关配置Swagger

2024-04-02 19:04:59 447人浏览 薄情痞子
摘要

1.前言 前端与后端的联系更多是通过api接口对接,API文档变成了前后端开发人员联系的纽带,开始变得越来越重要,而swagger就是一款让你更好的书写规范API文档的框架。在Oce

1.前言

前端后端的联系更多是通过api接口对接,API文档变成了前后端开发人员联系的纽带,开始变得越来越重要,而swagger就是一款让你更好的书写规范API文档的框架。在Ocelot Swagger项目示例中,通过APIGateway项目路由配置网关、上下游服务Swagger。对解决方案中的示例APIServiceA、APIServiceB项目Get方法进行配置,文件配置具体代码如下:

{
  "Routes": [
    {
      //下游服务地址
      "DownstreamPathTemplate": "/swagger/v1/swagger.JSON",
      //传输协议
      "DownstreamScheme": "Http",
      //下游主机跟端口号(数组)
      "DownstreamHostAndPorts": [
        {
          "Host": "localhost",
          "Port": 9001
        }
      ],
      //上游服务地址
      "UpstreamPathTemplate": "/a/swagger/v1/swagger.json",
      //上游服务Http端口号(数组)
      "UpstreamHttpMethod": [ "Get", "POST" ]
    },
    {
      //下游服务地址
      "DownstreamPathTemplate": "/swagger/v1/swagger.json",
      //传输协议
      "DownstreamScheme": "http",
      //上游服务Http端口号(数组)
      "DownstreamHostAndPorts": [
        {
          "Host": "localhost",
          "Port": 9002
        }
      ],
      //上游服务地址
      "UpstreamPathTemplate": "/b/swagger/v1/swagger.json",
      //上游服务Http端口号(数组)
      "UpstreamHttpMethod": [ "Get", "POST" ]
    },
    {
      "DownstreamPathTemplate": "/a",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "localhost",
          "Port": 9001
        }
      ],
      "UpstreamPathTemplate": "/a",
      "UpstreamHttpMethod": [ "Get" ]
    },
    {
      "DownstreamPathTemplate": "/b",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "localhost",
          "Port": 9002
        }
      ],
      "UpstreamPathTemplate": "/b",
      "UpstreamHttpMethod": [ "Get" ]
    }
  ],
  "GlobalConfiguration": {
    "RequestIdKey": "OcRequestId",
    "AdministrationPath": "/administration"
  }
}

2.项目演示

2.1APIGateway项目

添加Ocelot、Swagger服务注入:

public static IWEBHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
            .UseUrls("http://*:9000")
        .ConfigureAppConfiguration((hostinGContext, config) =>
        {
            config
                .SetBasePath(hostingContext.HostingEnvironment.ContentRootPath)
                .AddJsonFile("ocelot.json")
                .AddEnvironmentVariables();
        })
        .ConfigureServices(s =>
        {
            //添加Ocelot服务;
            s.AddOcelot();
            s.Addmvc();
            //添加Swagger服务;
            s.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo { Title = "GW", Version = "v1" });
                var basePath = PlatfORMServices.Default.Application.ApplicationBasePath;
                var xmlPath = Path.Combine(basePath, "APIGateway.xml");
                c.IncludeXmlComments(xmlPath);
            });
        })
        .Configure(a =>
        {
            //使用Swagger
            a.UseSwagger().UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/a/swagger/v1/swagger.json", "APIServiceA");
                c.SwaggerEndpoint("/b/swagger/v1/swagger.json", "APIServiceB");
            });

            //使用Ocelot;
            a.UseOcelot().Wait();
        })
        .Build();

2.2APIServiceA项目

Startup添加Swagger服务注入:
ConfigureServices:

services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new OpenApiInfo { Title = "APIServiceA", Version = "v1" });
    var basePath = PlatformServices.Default.Application.ApplicationBasePath;
    var xmlPath = Path.Combine(basePath, "APIServiceA.xml");
    c.IncludeXmlComments(xmlPath);
});
Configure:
app.UseSwagger();
app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "APIServiceA");
});

添加一个Get方法,对应APIGateway项目的路由上下游配置,具体代码如下:

/// <summary>
/// Values controller.
/// </summary>
[Route("a")]
public class ValuesController : Controller
{
    // GET api/values
    /// <summary>
    /// Get values.
    /// </summary>
    /// <returns>The get.</returns>
    [HttpGet]
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }
}

2.3APIServiceB项目

Startup添加Swagger服务注入:
ConfigureServices:

services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new OpenApiInfo { Title = "APIServiceB", Version = "v1" });
    var basePath = PlatformServices.Default.Application.ApplicationBasePath;
    var xmlPath = Path.Combine(basePath, "APIServiceB.xml");
    c.IncludeXmlComments(xmlPath);
});

Configure:

app.UseSwagger();
app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "APIServiceB");
});

添加一个Get方法,对应APIGateway项目的路由上下游配置,具体代码如下:

/// <summary>
/// Values controller.
/// </summary>
[Route("b")]
public class ValuesController : Controller
{
    // GET api/values
    /// <summary>
    /// Get values.
    /// </summary>
    /// <returns>The get.</returns>
    [HttpGet]
    public IEnumerable<string> Get()
    {
        return new string[] { "value3", "value4" };
    }
}

2.4项目运行

注:如果想把Swagger注释警告提示取消,可以在对应项目文件.csproj的PropertyGroup节点上加入<NoWarn>$(NoWarn);1591</NoWarn>这一行代码。
输入dotnet run --project 项目路径\项目文件.csproj把三个项目启动起来,通过在浏览器分别打开APIServiceA与APIServiceB两个站点上游服务Swagger地址,会看到如下信息:
APIServiceA:

APIServiceB:

通过网关的路由配置,把Swagger集成到Ocelot中,统一入口管理,通过网关入口我们就能打开不同下游服务的Swagger。

到此这篇关于ASP.net core为Ocelot网关配置Swagger的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: ASP.NETCore为Ocelot网关配置Swagger

本文链接: https://www.lsjlt.com/news/145382.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • ASP.NETCore为Ocelot网关配置Swagger
    1.前言 前端与后端的联系更多是通过API接口对接,API文档变成了前后端开发人员联系的纽带,开始变得越来越重要,而Swagger就是一款让你更好的书写规范API文档的框架。在Oce...
    99+
    2024-04-02
  • ASP.NET Core设置Ocelot网关限流
    1.限流(Rate Limiting) 很多时候为了防止DoS攻击,我们会通过限流方式对上游请求进行限制,以保护下游服务不会负荷过载,为客户端提供高质量的资源服务。在Ocelot限流...
    99+
    2024-04-02
  • Java之Swagger配置扫描接口以及开关案例讲解
    1. Swagger--配置扫描接口及开关 1.1 配置扫描接口 SwaggerConfig.java @Bean public Docket doc...
    99+
    2024-04-02
  • SpringCloud GateWay网关怎么配置
    本文小编为大家详细介绍“SpringCloud GateWay网关怎么配置”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringCloud GateWay网关怎么配置”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢...
    99+
    2023-06-30
  • 怎么在CentOS中配置网络配置相关文件
    怎么在CentOS中配置网络配置相关文件?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。CentOS 修改IP地址等网络相关的配置文件找到对应网卡的IP地址配置文件:ifcf...
    99+
    2023-06-07
  • 如何为虚拟机配置网络
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-06-11
  • 关于swagger配置及踩坑@Api参数postion无效解决接口排序问题
    目录添加maven依赖添加配置类在application.properties中添加配置添加控制类UserController请求对象类DTO响应对象类最后,上效果图最后还有个坑 添...
    99+
    2024-04-02
  • win10网关配置错误如何解决
    要解决win10网关配置错误,可以按照以下步骤进行操作:1. 打开“控制面板”,点击“网络和Internet”。2. 点击“网络和共...
    99+
    2023-08-31
    win10
  • linux怎么配置ip地址和网关
    要配置IP地址和网关,您可以按照以下步骤操作:1. 打开终端并以root用户身份登录。2. 使用以下命令来编辑网络配置文件(根据您使...
    99+
    2023-09-27
    linux
  • linux网卡配置网关不生效如何解决
    如果在Linux上配置了网卡的网关但是不生效,可能有以下几种原因和解决方法:1. 网关地址错误:确保设置的网关地址是正确的,与网络环...
    99+
    2023-09-15
    linux
  • SpringCloud之SpringCloud gateway网关路由怎么配置
    本篇内容介绍了“SpringCloud之SpringCloud gateway网关路由怎么配置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够...
    99+
    2023-07-05
  • Linux中如何配置双网卡双网关路由表
    这篇文章给大家分享的是有关Linux中如何配置双网卡双网关路由表的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。服务器操作系统RedHat linux 9,设置两张路由表 1. vi /etc/iproute2/r...
    99+
    2023-06-13
  • 自动注册Gateway网关路由怎么配置
    本文小编为大家详细介绍“自动注册Gateway网关路由怎么配置”,内容详细,步骤清晰,细节处理妥当,希望这篇“自动注册Gateway网关路由怎么配置”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。动态路由配置在启动...
    99+
    2023-07-05
  • 虚拟主机的网关地址怎么配置
    虚拟主机的网关地址配置可以通过以下步骤进行:1. 首先登录到虚拟主机的管理界面或使用SSH登录到虚拟主机的终端。2. 打开网络配置文...
    99+
    2023-09-07
    虚拟主机
  • gateway网关路由配置的方法是什么
    gateway网关路由配置可以通过以下几种方法进行:1. 配置文件:可以在gateway的配置文件中定义路由规则。通常使用YAML或...
    99+
    2023-09-18
    gateway
  • 详解自动注册Gateway网关路由配置
    目录动态路由配置基于yml配置文件基于Bean加载路由自动注册路由代码实现其他微服务的配置Gateway网关配置动态路由配置 在启动网关服务后,将无法修改路由配置。若有新服务上线的...
    99+
    2023-03-19
    Gateway网关路由配置 Gateway 自动注册网关路由
  • CentOS中网络配置相关文件配置选项说明是怎样的
    这篇文章将为大家详细讲解有关CentOS中网络配置相关文件配置选项说明是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。CentOS 修改IP地址等网络相关的配置文件找到对应网卡的IP地...
    99+
    2023-06-10
  • SpringCloud之Zuul网关原理及其配置讲解
    目录一、Zuul网关的作用二、Zuul网关的应用  1、网关访问方式2、网关依赖注入3、网关启动器4、网关全局变量配置  5、Zuul网关配置总结三、Zuul网关过滤器3.1过滤器实...
    99+
    2024-04-02
  • Ubuntu怎么为网卡配置静态IP地址
    这篇“Ubuntu怎么为网卡配置静态IP地址”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Ubuntu怎么为网卡配置静态IP...
    99+
    2023-07-04
  • centos怎么配置网卡修改ip地址和修改网关
    这篇文章主要介绍“centos怎么配置网卡修改ip地址和修改网关”,在日常操作中,相信很多人在centos怎么配置网卡修改ip地址和修改网关问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”centos怎么配置网...
    99+
    2023-06-10
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作