Swagger的基础使用可以参考之前的文章:.Net Core 5.x Api开发笔记 -- Swagger(七)
这里只记录如何给Swagger添加Header,要达到的效果如下图所示:

在项目中添加一个参数设置类,命名自定义就行,如下图所示:

代码如下:
1 public class HttpHeaderFilter : IOperationFilter
2 {
3 /// <summary>
4 /// 给Swagger添加Header头部参数
5 /// </summary>
6 /// <param name="operation"></param>
7 /// <param name="context"></param>
8 public void Apply(OpenApiOperation operation, OperationFilterContext context)
9 {
10 operation.Parameters = new List<OpenApiParameter>
11 {
12 new OpenApiParameter
13 {
14 Name = "token",
15 Description = "Token",
16 In = ParameterLocation.Header,
17 Required = false
18 },
19 new OpenApiParameter
20 {
21 Name = "TermID",
22 Description = "学期ID",
23 In = ParameterLocation.Header,
24 Required = false
25 },
26 new OpenApiParameter
27 {
28 Name = "ContainerID",
29 Description = "组织ID",
30 In = ParameterLocation.Header,
31 Required = false
32 }
33 };
34 }
35 }
参数说明:
Name:就是设置header的字段属性名称,在同一个参数位置,名称必须唯一,且大小写敏感。
In:参数位置,常见有三个:
required 字段必需为 true/users?id=123456Required:是否必需,默认值是 false
我们按照 In:参数位置的类型分别设置成 Header、Query、Path,看是什么效果

上边的参数类已经创建好,下边看下如何使用、使用很简单,代码如下(加红标粗的代码部分)
1 public void ConfigureServices(IServiceCollection services)
2 {
3 services.AddControllers();
4
5 //swagger
6 services.AddSwaggerGen(options =>
7 {
8 options.SwaggerDoc("swaggerapi", new OpenApiInfo
9 {
10 Version = "v1",
11 Title = "swaggerapi API文档",
12 Description = "swaggerapi API的使用说明"
14 });
15
16 // 为 Swagger JSON and UI设置xml文档注释路径
17 // 获取应用程序所在目录(绝对路径,不受工作目录影响,建议采用此方法获取路径)
18 // 此方式适用于Windows/Linux 平台
19 var basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location);
20 var xmlPath = Path.Combine(basePath, "NetCore.Swagger.xml");
21 options.IncludeXmlComments(xmlPath);
22
23 //添加自定义header授权参数
24 options.OperationFilter<HttpHeaderFilter>(Array.Empty<object>());
25 });
26 }
完毕!!!
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
我在使用omniauth/openid时遇到了一些麻烦。在尝试进行身份验证时,我在日志中发现了这一点:OpenID::FetchingError:Errorfetchinghttps://www.google.com/accounts/o8/.well-known/host-meta?hd=profiles.google.com%2Fmy_username:undefinedmethod`io'fornil:NilClass重要的是undefinedmethodio'fornil:NilClass来自openid/fetchers.rb,在下面的代码片段中:moduleNetclass
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
我正在查看instance_variable_set的文档并看到给出的示例代码是这样做的:obj.instance_variable_set(:@instnc_var,"valuefortheinstancevariable")然后允许您在类的任何实例方法中以@instnc_var的形式访问该变量。我想知道为什么在@instnc_var之前需要一个冒号:。冒号有什么作用? 最佳答案 我的第一直觉是告诉你不要使用instance_variable_set除非你真的知道你用它做什么。它本质上是一种元编程工具或绕过实例变量可见性的黑客攻击
我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain
我在Rails应用程序中使用CarrierWave/Fog将视频上传到AmazonS3。有没有办法判断上传的进度,让我可以显示上传进度如何? 最佳答案 CarrierWave和Fog本身没有这种功能;你需要一个前端uploader来显示进度。当我不得不解决这个问题时,我使用了jQueryfileupload因为我的堆栈中已经有jQuery。甚至还有apostonCarrierWaveintegration因此您只需按照那里的说明操作即可获得适用于您的应用的进度条。 关于ruby-on-r