.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,一经查实,立即删除!

相关文章

线段树-Count on a Treap-神题

Count on a Treap 题目来源 Codechef Feb 2014 COT5 https://www.codechef.com/problems/COT5 问题提出 什么是Treap 是一颗二叉搜索树,每个节点拥有keykeykey属性.是一颗堆,每个节点拥有weightweightweight属性 问题 nnn次操作,三种类型,要求维护"大根Treap" …

P6834-[Cnoi2020]梦原【数学期望,树状数组】

正题 题目链接:https://www.luogu.com.cn/problem/P6834?contestId34123 题目大意 nnn个点,每个点i(i≠1)i(i\neq 1)i(i​1)随机连接[i−k,i−1][i-k,i-1][i−k,i−1]中的一个点。对于每个点有一个权值aia_iai​。每次可以选择一个全部都是正权值的连通块里所有…

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

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

【DP】序列

序列 题目大意: 定义“好序列”为满足每一个数是上一个数的倍数的序列,求一个长度为K的“好序列” 原题: 题目描述 一个长度为k的整数序列b1,b2,…,bk(1≤b1≤b2≤…≤bk≤N)称…

线段树-楼房重建-洛谷-P4198

楼房重建 题目大意 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房。每天,这片工地上的房子拆了又建、建了又拆。他经常无聊地看着窗外发呆,数自己能够看到多少栋房子。 为了简化问题,我们考虑这些事件发生在一个二维平面…

P6835-[Cnoi2020]线形生物【期望dp】

正题 题目链接:https://www.luogu.com.cn/problem/P6835?contestId34123 题目大意 n1n1n1个点,其中每个iii向i1i1i1连边(i≤n)(i\leq n)(i≤n),然后有mmm对(u,v)(u,v)(u,v)表示uuu向vvv连边u≥vu\geq vu≥v。开始在点111,每次随机走一个相连…

【DP】游戏

游戏 题目大意: 有一个图,第s秒在点p会出现c个怪物(过了这一秒就会消失),小明可以从任意一个点出发(从第一秒开始),有m条路径(无向),链接着两个…

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

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

CF1419E-Decryption【数论,dfs】

正题 题目链接:https://www.luogu.com.cn/problem/CF1419E 题目大意 nnn的所有约数排成一个圈,求一个顺序使得相邻的互质的数最少。 解题思路 质因数分解后,我们考虑每个质因数之间填什么。对于两个质因数a,ba,ba,b。显然a∗ba*ba∗b也是nnn的约数&…

P4445 最长回文串

P4445 最长回文串 题目描述 顺序和逆序读起来完全一样的串叫做回文串。比如acbcaacbcaacbca是回文串,而abcabcabc不是(abc的顺序为abcabcabc,逆序为cbacbacba,不相同)。 输入长度为nnn的串SSS,求SSS的最…

RyuJIT的华丽转身

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

【树状数组】【dfs】树

树 题目大意: 有一棵树,当给一个点加上一个val时,他的儿子会减val,而他儿子的儿子会加上val(-(-val)val),有m条指令,要不输出某个点的值,要不给…

SP1811-Longest Common Substring【SAM】

正题 题目链接:https://www.luogu.com.cn/problem/SP1811 题目大意 求两个串的最长公共子串。 解题思路 对与第一个串首先构建一个SAMSAMSAM,然后考虑让第二个串在上面匹配。 对于枚举的每个位置要在SAMSAMSAM上找一个节点使得它的后缀是枚举到的位置的后缀。所…

使用Nexus搭建私有Nuget仓库

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

Wannafly挑战赛26 题解

Wannafly挑战赛26 题目连接 https://www.nowcoder.com/acm/contest/212#question A. 御坂网络 枚举圆心所在的位置,O(n)O(n)O(n) 检查即可,总时间复杂度为O(n2)O(n^2)O(n2) B. 冥土追魂 这题比较坑,我感觉题意叙述有问题,总之也是一道水题,题解略去. C. 七彩线段 题解 …

初一模拟赛总结(3.16)

成绩: rankrankranknamenamenamescorescorescoreT1T1T1T2T2T2T3T3T3T4T4T4111lyflyflyf210210210303030100100100000808080222hkyhkyhky190190190100100100000101010808080333fyfyfy120120120100100100000202020000444tjhtjhtjh100100100100100100000000000555wjjwj…

牛客挑战赛43C-最优公式【二分】

正题 题目链接:https://ac.nowcoder.com/acm/contest/7413/C 题目大意 给一个序列AAA,求两个a,ba,ba,b使得∑i1n∑j1nmax{∣Ai−a∣,∣Aj−b∣}\sum_{i1}^n\sum_{j1}^nmax\{|A_i-a|,|A_j-b|\}i1∑n​j1∑n​max{∣Ai​−a∣,∣Aj​−b∣}最小。 解题思路 因为是取…

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

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

牛客练习赛29 题解

牛客练习赛29 A. 可持久化动态图上树状数组维护01背包 题解 这题跟标题没有任何关系… 贪心的使得负数删除的时候下标尽可能大,然后正数的时候下标尽可能小. 观察到每个数下标最大的时候就是它的初始下标,下标的最小值是1. 然后贪心一下就好了. 代码 #include <iost…

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

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