.Net Core微服务入门——Swagger接入

2023-05-16

.Net Core微服务入门——Swagger接入

一、API接入Swagger

1、引入包:Swashbuckle.AspNetCore

2、修改Startup,在ConfigureServices 中添加 Swagger

public void ConfigureServices(IServiceCollection services)
{
    // 添加Swagger
    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
    });
    services.AddControllers();
}

3、修改Startup,在Configure方法里面添加Swagger有关的中间件

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
  {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        
        // 添加Swagger有关中间件
        app.UseSwagger();
        app.UseSwaggerUI(c =>
        {
            c.SwaggerEndpoint("/swagger/v1/swagger.json", "API Demo v1");
        });

        app.UseHttpsRedirection();

        app.UseRouting();

        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });

        //注册 Consul
        this.Configuration.ConsulRegist();
    }

4、启动调试,查看结果

https://localhost:49167/swagger
在这里插入图片描述

Swagger 成功接入,但是我们发现,只显示了接口,却没有显示相关描述信息。
不着急,我们继续!

二、API Swagger添加描述

1、引入包:Microsoft.Extensions.PlatformAbstractions

2、修改Startup,在ConfigureServices中注入xml相关描述

public void ConfigureServices(IServiceCollection services)
{
     // 添加Swagger
     services.AddSwaggerGen(c =>
     {
         c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });

         // 获取xml文件名
         var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
         // 获取xml文件路径
         var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
         // 添加控制器层注释,true表示显示控制器注释
         c.IncludeXmlComments(xmlPath, true);
     });

     services.AddControllers();

     //Development、Staging、Production
     //AppSetting.SetAppSetting(Configuration.GetSection("ConnectionStrings"));
     //设置配置
     AppConfiguration.SetConfiguration(Configuration);

     //注入数据库
     var connStr = Configuration.GetConnectionString("SQLServerConnection");
     services.AddDbContext<SqlContext>(builder => builder.UseSqlServer(connStr));

     //注入Mysql数据库
     var connMysqlStr = Configuration.GetConnectionString("MySQLConnection");
     services.AddDbContextPool<MySqlContext>(builder => builder.UseMySql(connMysqlStr, new MySqlServerVersion(new Version(5, 7, 21))));
     //services.AddDbContextPool<MySqlContext>(builder => builder.UseMySql(connMysqlStr, new MySqlServerVersion(new Version(8, 0, 11))));
 }

3、项目右键,选择属性,勾选“XML文档文件”,如下图所示:

在这里插入图片描述
4、选中项目 xxxxx.xml,修改成 如果较新则复制

在这里插入图片描述
为什么要这样设置呢,如果不设置的话,发布时候会出问题,找不到 xml文件

4、启动调试,查看结果

https://localhost:49167/swagger

在这里插入图片描述

API已经接入了swagger,但是我们是不直接访问api,而是访问网关,那网关怎么接入Swagger呢

三、Ocelot添加Swagger

1、引入包:Swashbuckle.AspNetCore

2、修改Startup,在ConfigureServices 中添加 Swagger

public void ConfigureServices(IServiceCollection services)
{
    string consulport = Configuration["consulport"];
    if (!string.IsNullOrWhiteSpace(consulport))
    {
        Configuration["GlobalConfiguration:ServiceDiscoveryProvider:Port"] = consulport;
    }

    services.AddMvc();
    //注入Swagger
    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1",
            new OpenApiInfo { Title = "Gateway API", Version = "v1", Description = "# gateway api..." });
    });

    //添加ocelot服务
    //services.AddOcelot();
    //添加ocelot服务
    services.AddOcelot()
        //添加consul支持
        .AddConsul()
        //添加缓存
        .AddCacheManager(x =>
        {
            x.WithDictionaryHandle();
        })
        //添加Polly
        .AddPolly();

}

3、修改Startup,在Configure方法里面添加Swagger有关的中间件

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
 {
     app.UseSwagger();
     app.UseSwaggerUI(c =>
     {
         //这里要与 UpstreamPathTemplate 相同,支持配置多个
         c.SwaggerEndpoint("/myapi/swagger/v1/swagger.json", "MyAPI V1");
     });

     //设置Ocelot中间件
     app.UseOcelot().Wait();

 }

4、修改ocelot.json,增加Swagger配置

"Routes": [
    {
      "DownstreamPathTemplate": "/api/{url}",
      "DownstreamScheme": "http",
      "UpstreamPathTemplate": "/api/{url}",
      "UpstreamHttpMethod": [ "Get", "Post" ],
      "ServiceName": "MyApi",
      "LoadBalancerOptions": {
        "Type": "RoundRobin"
      },
      "FileCacheOptions": {
        "TtlSeconds": 5,
        "Region": "regionname"
      },
      "RateLimitOptions": {
        "ClientWhitelist": [ "SuperClient" ], //白名单
        "EnableRateLimiting": true, //是否开启限流
        "Period": "5s",
        "PeriodTimespan": 2,
        "Limit": 5
      },
      "QoSOptions": {
        "ExceptionsAllowedBeforeBreaking": 3, //发生错误的次数
        "DurationOfBreak": 10000, //熔断时间 毫秒
        "TimeoutValue": 5000 //超时时间 毫秒
      }
    },
    {
      //引入swagger
      "DownstreamPathTemplate": "/swagger/v1/swagger.json",
      "DownstreamScheme": "http",
      "UpstreamPathTemplate": "/myapi/swagger/v1/swagger.json",
      "UpstreamHttpMethod": [ "Get", "Post" ],
      "ServiceName": "MyApi",
      "LoadBalancerOptions": {
        "Type": "RoundRobin"
      }
    }
 ]

5、调试启动

https://localhost:49171/swagger/index.html

在这里插入图片描述
在这里插入图片描述

完成!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.Net Core微服务入门——Swagger接入 的相关文章

  • 用real vnc连接服务器

    用real vnc连接服务器 xff08 一 xff09 在无法访问服务器内部网络 首先 xff0c 本地电脑需要可以ping通服务器的IP xff0c 像学校的服务器 xff0c 一般只能用学校的网络才能访问 xff0c 若在校外 xff
  • nginx配置ssl证书实现https访问

    配置ssl证书之前 xff0c 先准备SSL证书 xff0c 至于获取的途径很多 xff08 阿里云的服务 xff0c 第三方服务购买 xff09 这里不详细解释 以下是我的SSL证书 准备好证书后 xff0c 找到nginx的安装目录 x
  • 棋牌游戏算法——麻将系列总结

    麻将介绍 麻将的基本规则都是一样的 xff0c 我就不累赘了 我从事棋牌工作五年了 xff0c 开发过无数的麻将玩法 xff0c 如柳州麻将 xff0c 转转麻将 xff0c 红中麻将 xff0c 来宾麻将 xff0c 广东麻将 xff0c
  • Docker run 命令详解

    命令格式 xff1a docker run OPTIONS IMAGE COMMAND ARG Usage Run a command in a new container 中文意思为 xff1a 通过run命令创建一个新的容器 xff08
  • ROS笔记——创建简单的主题发布节点和主题订阅节点

    在安装好ROS后 xff0c 接着学习如何创建节点和节点之间的通信方式 xff0c 以一个简单的主题发布节点和主题订阅节点说明 节点是连接ROS网络等可执行文件 xff0c 是实现某些功能的软件包 xff0c 也是一个主要计算执行的进程 一
  • SVN常用命令总结

    svn使用总结 SVN检出操作 svn checkout path svn checkout svn 192 168 0 1 project 简写 xff1a svn co SVN查看状态 span class token string 3
  • vue-cli3搭建的vue改造成SSR项目

    vue cli3搭建的vue改造成SSR项目 一 文章简介二 搭建vue项目三 改造成SSR首先安装ssr的所需相关依赖改造router ts改造store ts改造main ts创建entry client ts创建entry serve
  • VSCode配置Git随记

    vscode中对git进行了集成 很多操作只需点击就能操作 无需写一些git指令 不过这就需要你对vscode进行配置 下面我会讲到git的配置与免密码上传github 一 安装Git管理工具 可上官网安装 安装路径Git 安装路径默认C
  • VSCode插件推荐(2018.5.31)

    前言 vscode我觉得是用过最好用的编辑器 xff0c 相对而言没有webStorm myeclipse那么卡 xff0c 而且最主要是免费的 xff0c 不用烦每次更新软件的时候破解码无法使用 xff0c 这篇博客主要是记录我自己发现的
  • VSCode配置 Debugger for Chrome插件

    Debugger for Chrome这个插件是直接在vscode里面进行调试js文件 xff0c 跟谷歌的控制台是一样的功能 xff0c 下载了它就不用打开浏览器的控制台就能进行打断点 首先在左侧扩展栏找到这个插件下载好了后重启编辑器之后
  • VSCode打开vue项目的vue组件提示错误的解决办法及key属性的作用

    本博文为学习过程中随记 xff0c 如有抄袭请评论告知谢谢 xff01 最近重新拾起了vue项目 xff0c 因为之前开始习惯使用VSCode编码 xff0c 因此在打开vue项目时 xff0c vue的语法v for默认报错 以下是解决方
  • vue搭建脚手架及部署vue项目随记

    本博文是用于介绍搭建vue脚手架及使用webpack部署vue脚手架目录 1 依赖软件 Node js 1 1下载node js http nodejs cn download https npm taobao org mirrors no
  • 最新版XAMPP中php7.2配置mongodb3.6扩展

    本博文为本人配置mongo随记 第一步下载xampp xff0c 地址 xff1a https www apachefriends org zh cn download html xff0c 这里我下载的是最新版php7 2 8 安装完之后
  • nginx的进程模型

    文章目录 一 Nginx进程模型master进程worker进程示意图 二 Nginx reload配置文件过程三 worker进程处理请求的过程四 Nginx多进程模型的好处 一 Nginx进程模型 Nginx启动后 xff0c 以dae
  • 基于docker的github升级之路

    基于docker的github升级之路 公司的gitlab目前的版本是8 13 2 xff0c 运行在docker容器内 该版本使用的api版本是V3 xff0c 已经不适合一些监控统计工具的调用了 xff0c 看了gitlab官网上对最新
  • .frm,.myd,myi转换为.sql导入数据库

    先说说这几种文件是干什么的 xff1a frm是描述了表的结构 xff0c myd保存了表的数据记录 xff0c myi则是表的索引 其实一个 frm文件就是对应的数据库中的一个表 表示数据表的表结构 MYD文件 这应该是INNODB引擎外
  • linux idea无法输入中文

    linux idea无法输入中文 1 系统输入法切换快捷键 xff08 ctrl 43 space xff09 与idea快捷键冲突 xff0c 更改输入法快捷键 xff0c 如改为 ctrl 43 6
  • linux设置systemd服务

    linux设置systemd服务 access dir etc systemd system create file whose name ended with service chmod 644 xx service edit xx se
  • 普通用户使用docker命令

    普通用户使用docker命令 add docker group sudo cat etc group docker sudo groupadd g 999 docker add user to docker group sudo gpass
  • samba服务器

    samba服务器 install samba edit etc samba smb conf default comment 61 default path 61 opt es backups valid users 61 zsk13 wr

随机推荐

  • linux安装mongodb

    install mongodb tar zxvf mongodb linux x86 64 4 0 22 tgz useradd mongod init passwd with mongod passwd mongod mkdir for
  • linux制作iso启动盘

    制作iso启动盘 sudo fdisk l umount dev sdb umount dev sdb1 umount dev sdd2 umount dev sdd3 sudo mkfs ext4 dev sdb sudo dd if 6
  • ros2+opencv抓取rtsp视频流

    遇到的坑 xff1a rtsp视频流和转ros2 topic放到一个线程里 xff0c 频繁提示解码丢帧的情况 解决这个问题需要将opencv获取rtsp视频流单独开一个线程 xff0c 不能在里面处理任何多余的代码 代码如下 xff1a
  • 机械臂标定实战

    硬件资源 xff1a 机械臂viper300 摄像头realsense d435i 软件版本 xff1a 操作系统 xff1a Ubuntu18 04 ROS Melodic 标定算法 xff1a 采用easy handeye 算法包 ht
  • Linux 下的 Docker 安装及创建私有仓(三)

    Linux 下的 Docker 安装及创建私有仓 xff08 三 xff09 辛苦打工人 xff0c 今天继续搬砖 xff0c 搞搞私有仓用户和密码 废话不说 xff0c 开工 xff01 1 安装httpd tools 授权需要用到 xf
  • .Net Core Web API 发布到Linux Docker(一)

    Net Core Web API 发布到Linux Docker xff08 一 xff09 Net Core Web API 项目已经建好 xff0c 想要发布到Linux Docker 上 xff0c 具体研究了一下 xff0c 发现有
  • 设置mysql允许外网访问

    mysql的root账户 我在连接时通常用的是localhost或127 0 0 1 公司的测试服务器上的mysql也是localhost所以我想访问无法访问 测试暂停 解决方法如下 1 修改表 登录mysql数据库 切换到mysql数据库
  • .Net Core Web API 发布到Linux Docker(二)

    Net Core Web API 发布到Linux Docker xff08 二 xff09 本章将尝试 Net Core Web API 直接发布到私有仓 Net Core Web API 直接发布到Docker私有仓 1 选择需要发布的
  • .Net Core微服务入门——Consul集群搭建(一)

    Net Core微服务入门 Consul集群搭建 xff08 一 xff09 前几天一直在本地机器试用Consul xff0c 今天特意在服务器上试试 xff0c 并搭建下集群 一 服务器安装consul 获取镜像 docker pull
  • .Net Core微服务入门——Consul集群搭建(二)

    Net Core微服务入门 Consul集群搭建 xff08 二 xff09 1 先启动第一个consul服务 xff1a consul1 docker run name consul1 d p 8500 span class token
  • .Net Core微服务入门——Consul集群搭建(三)

    Net Core微服务入门 Consul集群搭建 xff08 三 xff09 本章将介绍 Consul 集群 Client 还记得第一篇中 xff0c 我们再Consul中启动了2个MyAPI服务么 xff0c 我们重启下 xff0c 看下
  • .Net Core微服务入门——Consul集群搭建(四)

    Net Core微服务入门 Consul集群搭建 xff08 四 xff09 多台服务器集群搭建 1 先关闭几台集群服务器防火墙 当然 xff0c 不关闭也可以 xff0c 那就必须开通端口权限 consul 涉及的端口 xff1a 850
  • Docker 同一主机容器间通信

    Docker 容器间通信 本文我们采用bridge网络通信 1 创建bridge网络 docker network create testnet 2 查看Docker网络 docker network ls 3 运行容器连接到testnet
  • Centos7端口查看开放,防火墙开启关闭命令等

    1 开放 关闭端口 开放5001端口 firewall cmd zone 61 public add port 61 5001 tcp permanent 关闭5001端口 firewall cmd zone 61 public remov
  • .Net Core微服务入门——Ocelot API网关接入(一)

    Net Core微服务入门 Ocelot API网关接入 上一章我们测试了一个简单的Client 端访问Consul实现服务注册与发现 xff0c 但是现实生产环境我们直接通过Client自行连接Consul实现服务注册与发现 xff0c
  • .Net Core微服务入门——Ocelot API网关接入(二)

    Net Core微服务入门 Ocelot API网关接入 xff08 二 xff09 我们先接入Consul xff0c 实现服务发现 服务发现 1 引入 Ocelot Provider Consul 包 2 修改ocelot json x
  • .NET Core根据环境变量支持多个 appsettings.json配置文件

    NET Core根据环境变量支持多个 appsettings json配置文件 在项目开发的过程当中 xff0c 开发环境 测试环境 生产环境的配置肯定是不一样的 xff0c 单靠一个 appsettings json xff0c 没法满足
  • (转)SQL Server 2008 允许远程连接的解决方法

    用户在使用SQL Server 2008远程链接时 xff0c 可能会弹出如下对话框 xff1a 在链接SQL服务器时发生网络链接错误或特定实例错误 SQL服务器不存在或者链接不成功 请验证用户名是否正确或SQL服务器是否已经配置远程链接功
  • .Net Core微服务入门——Ocelot和Consul集群高可用

    Net Core微服务入门 Ocelot和Consul集群高可用 上一章 我们ocelot网关顺利的接入了consul集群 并且访问成功 但是 我们也遇到了问题 把 192 168 8 25 上的consul停掉了 重新访问ocelot网关
  • .Net Core微服务入门——Swagger接入

    Net Core微服务入门 Swagger接入 一 API接入Swagger 1 引入包 xff1a Swashbuckle AspNetCore 2 修改Startup xff0c 在ConfigureServices 中添加 Swagg