使用swagger的Web API文档
我是新手,我已经看过几个在线文档,将Swagger实现到我的webapi,并使用SwaggerConfig的一些属性进行自定义。
以下是我的要求: – 我需要根据“API_Key”TextBox的值“浏览”按钮单击显示swagger文档,该值应与我的app.config键匹配。
所以我看到这样实现: –
- 用户来到我的招摇主页,默认情况下它将有空文档,除了图像中显示的标题。
- 在标题中提供的文本框中输入API_Key,然后单击“浏览”。
- 使用我的app.config中的密钥validation输入的API密钥,或者如果可能,在SwaggerConfig中validation。
- 如果validation了show documentation,则将错误消息显示为无效的API密钥。
需要建议。
亲切的问候,Raghu
只需编辑index.html
并在addApiKeyAuthorization
更改事件中添加所需的标头。 在这里查看更多:
您可以为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); } }