使用swagger的Web API文档

我是新手,我已经看过几个在线文档,将Swagger实现到我的webapi,并使用SwaggerConfig的一些属性进行自定义。

以下是我的要求: – 我需要根据“API_Key”TextBox的值“浏览”按钮单击显示swagger文档,该值应与我的app.config键匹配。

在此处输入图像描述

所以我看到这样实现: –

  1. 用户来到我的招摇主页,默认情况下它将有空文档,除了图像中显示的标题。
  2. 在标题中提供的文本框中输入API_Key,然后单击“浏览”。
  3. 使用我的app.config中的密钥validation输入的API密钥,或者如果可能,在SwaggerConfig中validation。
  4. 如果validation了show documentation,则将错误消息显示为无效的API密钥。

需要建议。

亲切的问候,Raghu

只需编辑index.html并在addApiKeyAuthorization更改事件中添加所需的标头。 在这里查看更多:

https://github.com/swagger-api/swagger-ui#header-parameters

您可以为web api添加自定义消息处理程序,然后对文档发出授权请求:

  private const string swaggerApikey = "swagger-apiKey"; private void Configuration([NotNull] IAppBuilder app) { var config = new HttpConfiguration(); config.MessageHandlers.Add(new SwaggerMessageHandler()); config .EnableSwagger(c => { c.ApiKey(swaggerApikey) .Description(swaggerApikey) .Name(swaggerApikey) .In("header"); }) .EnableSwaggerUi(c => { c.EnableApiKeySupport(swaggerApikey, "header"); }); app.UseWebApi(config); } internal class SwaggerMessageHandler : DelegatingHandler { protected override Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { if (request.RequestUri.LocalPath.Equals("/swagger/docs/v1")) { var apikey = request.Headers.FirstOrDefault(x => x.Key.Equals(swaggerApikey)).Value?.FirstOrDefault(); if (!"secretApiKey".Equals(apikey)) return Task.FromResult(new HttpResponseMessage(HttpStatusCode.Forbidden)); } return base.SendAsync(request, cancellationToken); } }