我的编程空间,编程开发者的网络收藏夹
学习永远不晚

ASP.NETCore为Ocelot网关配置Swagger

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

ASP.NETCore为Ocelot网关配置Swagger

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的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

ASP.NETCore为Ocelot网关配置Swagger

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

下载Word文档

猜你喜欢

SpringCloud GateWay网关怎么配置

本文小编为大家详细介绍“SpringCloud GateWay网关怎么配置”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringCloud GateWay网关怎么配置”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知
2023-06-30

怎么在CentOS中配置网络配置相关文件

怎么在CentOS中配置网络配置相关文件?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。CentOS 修改IP地址等网络相关的配置文件找到对应网卡的IP地址配置文件:ifcf
2023-06-07

如何为虚拟机配置网络

为虚拟机配置网络可以通过以下步骤完成:打开虚拟机管理软件(如VirtualBox、VMware等),选择要配置网络的虚拟机。进入虚拟机的设置界面,找到网络选项。在网络选项中,选择网络连接方式,可以选择使用NAT、桥接、仅主机等不同的连接
如何为虚拟机配置网络
2024-06-11

win10网关配置错误如何解决

要解决win10网关配置错误,可以按照以下步骤进行操作:1. 打开“控制面板”,点击“网络和Internet”。2. 点击“网络和共享中心”。3. 在左侧菜单中,点击“更改适配器设置”。4. 右键点击当前使用的网络连接,选择“属性”。5.
2023-08-31

linux怎么配置ip地址和网关

要配置IP地址和网关,您可以按照以下步骤操作:1. 打开终端并以root用户身份登录。2. 使用以下命令来编辑网络配置文件(根据您使用的Linux发行版可能会有所不同):- Ubuntu/Debian:`sudo nano /etc/net
2023-09-27

linux网卡配置网关不生效如何解决

如果在Linux上配置了网卡的网关但是不生效,可能有以下几种原因和解决方法:1. 网关地址错误:确保设置的网关地址是正确的,与网络环境相匹配。- 可以使用`route -n`命令检查当前的路由表设置,确认网关地址是否正确。- 可以使用`ip
2023-09-15

SpringCloud之SpringCloud gateway网关路由怎么配置

本篇内容介绍了“SpringCloud之SpringCloud gateway网关路由怎么配置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
2023-07-05

Linux中如何配置双网卡双网关路由表

这篇文章给大家分享的是有关Linux中如何配置双网卡双网关路由表的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。服务器操作系统RedHat linux 9,设置两张路由表 1. vi /etc/iproute2/r
2023-06-13

CentOS中网络配置相关文件配置选项说明是怎样的

这篇文章将为大家详细讲解有关CentOS中网络配置相关文件配置选项说明是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。CentOS 修改IP地址等网络相关的配置文件找到对应网卡的IP地
2023-06-10

为 Nginx 配置 ModSecurity 网络应用防火墙

网络应用防火墙(WAF)是一种在应用层监控网络流量的应用程序。
NginxModSecurit2024-11-30

详解自动注册Gateway网关路由配置

这篇文章主要为大家介绍了自动注册Gateway网关路由配置的方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-03-19

虚拟主机的网关地址怎么配置

虚拟主机的网关地址配置可以通过以下步骤进行:1. 首先登录到虚拟主机的管理界面或使用SSH登录到虚拟主机的终端。2. 打开网络配置文件,可以使用以下命令编辑/etc/network/interfaces文件:```sudo nano /et
2023-09-07

智能网关宽带业务零配置下发

本文将详细阐述宽带业务的开通流程,以及RMS如何通过TR069协议对智能网关进行零配置下发及质量检测。

自动注册Gateway网关路由怎么配置

本文小编为大家详细介绍“自动注册Gateway网关路由怎么配置”,内容详细,步骤清晰,细节处理妥当,希望这篇“自动注册Gateway网关路由怎么配置”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。动态路由配置在启动
2023-07-05

gateway网关路由配置的方法是什么

gateway网关路由配置可以通过以下几种方法进行:1. 配置文件:可以在gateway的配置文件中定义路由规则。通常使用YAML或properties格式的配置文件,可以指定匹配的请求路径、目标服务、过滤器等信息。2. 注解:可以使用Sp
2023-09-18

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录