我是新手,我已经看过几个在线文档,将Swagger实现到我的webapi,并使用SwaggerConfig的一些属性进行自定义。
这是我的要求: - 我只需要在"探索"按钮点击基于" API_Key"的值TextBox应与我的app.config键匹配。
所以我看到这样实现: -
需要建议。
亲切的问候, Raghu
答案 0 :(得分:2)
只需修改index.html
,然后在addApiKeyAuthorization
更改事件中添加所需的标题即可。点击此处了解更多信息:
答案 1 :(得分:1)
您可以为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<HttpResponseMessage> 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);
}
}