.Net Core小技巧 - Swagger适配虚拟目录及二级目录

前言

  随着前后端分离模式与微服务架构的出现,Web API变得越来越重要及普遍。而后出现的网关技术,使开发者更倾向于使用二级/多级目录来暴露Web API,一是暴露的端口更少,方便管理;二是在网关中可以处理一些公共的事务,如认证。但swagger默认是适配根(root)目录的,想要适配二级/多级目录,需要额外处理,同时还要区分开发环境与其它环境。一种思路是在开发环境就让Web API是处于二级目录,此时可以在本机通过nginx和iis虚拟目录来模拟,但这种思路明显略微麻烦。另一种思路是通过配置多环境的方式实现。

 

步骤

1. 安装Swagger

Install-Package Swashbuckle.AspNetCore

 

2.  配置Swagger服务

services.AddSwaggerGen(c =>{c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
});

 

3. 配置swagger中间件

640?wx_fmt=png

4. 配置appsettings.json

在appsettings.json中添加virtualPath的配置:

640?wx_fmt=png

640?wx_fmt=png

测试

1. 开发环境测试

 640?wx_fmt=png

 

640?wx_fmt=png

 

2. 模拟生产环境测试

修改launchSettings.json,改变环境变量参数:

640?wx_fmt=png

 640?wx_fmt=png

 

准备nginx.conf,并启动nginx。

640?wx_fmt=png

访问二级目录

640?wx_fmt=png

 

小结

  本文涉及的代码并不多,主要想表达的是设计思路,以及对多环境的处理方案,不得不说的是,.Net Core在环境适配以及其它方面的设计都十分优秀。

  二级目录适配虽然是个很小的问题,但是却是微服务实践中一个很常见的问题。

  二级目录适配能否自动适配而非配置适配,也是一个值得思考的问题。  

 

源码

  https://github.com/ErikXu/.NetCoreTips/tree/master/SwaggerVirtualPath

原文地址:https://www.cnblogs.com/Erik_Xu/p/9195803.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321060.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

好代码是管出来的——使用Git来管理源代码

软件开发过程中一个重要的产出就是代码,软件的编码过程一般是由一个团队共同完成,它是一个并行活动,为了保证代码在多人开发中能够顺利完成,我们需要使用代码版本控制工具来对代码进行统一存储,并追踪每一份代码的历史…

定时调度系列之Quartz.Net详解

一. 背景我们在日常开发中,可能你会遇到这样的需求:"每个月的3号给用户发信息,提醒用户XXX "、"每天的0点需要统计前一天的考勤记录"、"每个月的1号计算上个月的库存情况"、"定时初始化数据供其它业务使用…

RyuJIT的华丽转身

RyuJIT是作为.NET即时编译器的代号称谓,它是.NET运行时的基本组件之一。与此相反的是,Roslyn作为C#编译器,其编译C#代码成为IL字节码。然后,其再将IL字节码编译成相对于多种处理器的机器码。随着最近对dotnet/coreclr #18064的合并…

使用Nexus搭建私有Nuget仓库

前言Nuget是ASP .NET Gallery的一员,是免费、开源的包管理工具,专注于在.Net / .Net Core应用开发过程中第三方组件库的管理,相对于传统单纯的dll引用要方便、科学得多。其中nuget.org是最著名的Nuget公开库,但是企业内部开发的&a…

好代码是管出来的——Git的分支工作流与Pull Request

上一篇文章好代码是管出来的——使用Git来管理源代码 介绍了常用的版本控制工具以及git的基本用法,从基本用法来看git与其它的版本控制工具好像区别不大,都是对代码新增、提交进行管理,可以查看提交历史、代码差异等功能。但实际上git有一个重…

【Floyed】小萨的烦恼(ssl 1624)

小萨的烦恼 ssl 1624 题目大意: 一个无向图,可以使其中一条道路的值除以2,求两个点之间的最短路 原题: Description 圣诞节又要到了!小萨希望和自己心仪的MM一起出去度过一个浪漫的的圣诞节。他进行了详尽的准备…

好代码是管出来的——使用GitHub

前面的文章介绍了Git的基本概念和用法,本文则是基于GitHub的一个实践介绍,主要内容有:GitHub简介个人与组织仓库的创建与维护Fork与pull request小结GitHub简介GitHub是一个Git的远程代码托管平台,它除了提供代码托管外&#xff0…

【模拟】正方形

正方形 题目大意: 有三个人,一人一笔的画正方形,每个正方形是上一个正方形每条边上的中点连接而成的,求每个人画了多长 原题: 题目描述 又到暑假啦,Conan, Ayumi, Mitsuhiko, Genta一起到Hakase家愉快…

.NET Core微服务之基于IdentityServer建立授权与验证服务

一、IdentityServer的预备知识要学习IdentityServer,事先得了解一下基于Token的验证体系,这是一个庞大的主题,涉及到Token,OAuth&OpenID,JWT,协议规范等等等等,园子里已经有很多介绍的文章了…

在Docker中部署Asp.net core2.1以及修改发布

本篇文章主要是如何在Docker容器中运行ASP.NET Core应用程序,以及修改系统之后,发布更新。本文章采用自定义的Docker文件系统要求:1.服务器或本地已经安装docker一、创建一个Asp.Net Core 2.1 Web应用(若可以熟练创建项目&#xf…

要用Identity Server 4 -- OAuth 2.0 超级简介

OAuth 2.0 简介OAuth有一些定义:OAuth 2.0是一个委托协议, 它可以让那些控制资源的人允许某个应用以代表他们来访问他们控制的资源, 注意是代表这些人, 而不是假冒或模仿这些人. 这个应用从资源的所有者那里获得到授权(Authorization)和access token, 随后就可以使用这个access…

好代码是管出来的——C#的代码规范

代码是软件开发过程的产物,代码的作用是通过编译器编译后运行,达到预期的效果(功能、稳定性、安全性等等),而另外一个重要作用是给人阅读。对于机器来说只要代码正确就能够正确的运行程序,但是人不同,如果代码编写混乱…

.NET Core微服务之基于IdentityServer建立授权与验证服务(续)

上一篇《.NET Core微服务之基于IdentityServer建立授权与验证服务》我们基于IdentityServer4建立了一个AuthorizationServer,并且继承了QuickStartUI,能够成功获取Token了。这一篇我们了解下如何集成API Service和MVC Web Application。一、集成API Serv…

ASP.NET Core 2.1 : 十一. 如何在后台运行一个任务

在大部分程序中一般都会需要用到后台任务, 比如定时更新缓存或更新某些状态。一、应用场景以调用微信公众号的Api为例, 经常会用到access_token,官方文档这样描述:“是公众号的全局唯一接口调用凭据,有效期目前为2个小…

好代码是管出来的——.Net中的代码规范工具及使用

上一篇文章好代码是管出来的——C#的代码规范介绍了编码标准中一些常用的工具,本篇就具体来介绍如何使用它们来完成代码管理。  本文主要内容有:Roslyn简介开发基于Roslyn的代码分析器常用的基于Roslyn的代码分析器在.Net Framework项目中使用代码分析…

P6046-纯粹容器【数学期望,组合数】

正题 题目链接:https://www.luogu.com.cn/problem/P6046 题目大意 nnn个数,每次选择两个相邻的数删除小的那个,求每个数期望存活轮数。 解题思路 相当于一条链每次缩掉一条边,我们发现其实每个点只需要考虑左右第一个比它大的就好了。定义…

探讨.NET Core的未来

本文要点与传统的.NET Framework相比,.NET Core平台具有显著的性能优势。.NET Core在Microsoft平台之外也广为采用,并受益于强大的社区参与。.NET Core在设计上采用以服务器为中心,而非聚焦于Windows。.NET Core开发受益于这种设计。.NET Cor…

【数论】分数拆分

分数拆分 题目大意: 给出一个数k,问满足1/k1/x1/y且x>y的x,y有多少对 原题: 解题思路: 首先1k1x1y\frac{1}{k}\frac{1}{x}\frac{1}{y}k1​x1​y1​,变式为1k−1y1x\frac{1}{k}-\frac{1}{y}\frac{1}{x}k1​−y1​x1​,然后再…

.NET Core Community 第三个千星项目诞生:爬虫 DotnetSpider

DotnetSpider 至力于打造一个轻量化、高效率、易开发、可管理的一体化爬虫框架。它的核心要素是URL调度、基本的网页内容下载器、基于爬虫实体类的爬虫实现模式、常用数据库的支持、多线程的支持、状态的监控、运行日志、网页端管理。DotnetSpider 具有相当高的可定制性&#x…

Wannafly 挑战赛27 题解

Wannafly 挑战赛27 题目连接 https://www.nowcoder.com/acm/contest/215#question A.灰魔法师 题目 题解 考虑到可能的完全平方数只有400400400多个,因此对于每种数,直接暴力枚举所有的完全平方数计算一下就可以了. 代码 #include <iostream> #define int long lon…