pra*_*ant 4 c# asp.net-web-api swagger swashbuckle
我正在尝试swagger(SwashBuckle)来生成web api文档.我已经使用swagger使用Web API文档成功生成了文档但是我无法成功发送API请求,因为我们有少量方法的基于令牌的身份验证(用于身份验证的自定义标头).
我试图找出相同的示例代码/资源,但没有太多运气.如果有人在他们的申请中实施/遇到类似的事情,请告诉我.
我前段时间遇到了同样的问题,并在博客http://bitoftech.net/2014/08/25/asp-net-web-api-documentation-using-swagger/上寻求解决方案.
这是对我有用的答案:
1.添加名为"SwaggerExtensions"的新文件,然后添加名为"onComplete.js"的新JS文件,您必须将此文件的构建操作更改为"Embedded Resource".
2.在文件"onComplete.js"中粘贴以下代码:
$('#input_apiKey').change(function () {
var key = $('#input_apiKey')[0].value;
if (key && key.trim() != "") {
key = "Bearer " + key;
window.authorizations.add("key", new ApiKeyAuthorization("Authorization", key, "header"));
}
});
Run Code Online (Sandbox Code Playgroud)
3.打开文件"SwaggerConfig.cs"并在寄存器方法中粘贴下面的代码:
SwaggerUiConfig.Customize(c =>
{
c.SupportHeaderParams = true;
c.InjectJavaScript(typeof(SwaggerConfig).Assembly, "AngularJSAuthentication.API.SwaggerExtensions.onComplete.js");
});
Run Code Online (Sandbox Code Playgroud)
请注意,您需要更改完整的程序集名称以匹配程序集名称.
我相信,一旦你运行UI,你会发现这个文件已被下载,它将正确设置授权标题.
您需要设置API Key授权。https://github.com/domaindrivendev/Swashbuckle中的自述文件中的“描述安全/授权方案”对此有详细信息,但简而言之,您需要在调用 httpConfiguration.EnableSwagger() 时执行如下操作
c.ApiKey("apiKey")
.Description("API Key Authentication")
.Name("apiKey")
.In("header");
Run Code Online (Sandbox Code Playgroud)
然后,您需要创建一个派生自 IDocumentFilter 的自定义属性,并将其应用到控制器中的适当方法。假设您将此称为 ApiKeyFilter。然后,您需要通过在 EnableSwagger() 中添加以下内容来向 Swagger 注册它
c.OperationFilter<ApiKeyFilter>();
Run Code Online (Sandbox Code Playgroud)
我不知道 ApiKey 属性的示例代码,但我之前为 OAuth2 使用过https://github.com/domaindrivendev/Swashbuckle/blob/master/Swashbuckle.Dummy.Core/SwaggerExtensions/AssignOAuth2SecurityRequirements.cs,你应该能够适应这一点。
| 归档时间: |
|
| 查看次数: |
8254 次 |
| 最近记录: |