:
public class AddRequiredHeaderParameter : IOperationFilter {
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription) {
if (operation.parameters == null) {
operation.parameters = new List<Parameter>();
}
operation.parameters.Add(new Parameter {
name = "Foo-Header",
@in = "header",
type = "string",
required = true
});
}
}
そして、そのように私のSwaggerConfig
にクラスを追加しました。また、ヘッダーパラメータをSwagger UI Webサイトに追加したいと思っていました。これが私たちのやり方です:
1。OperationFilterクラスの定義 OperationFiltersは、SwaggerをビルドするたびにすべてのAPI操作で実行されます。あなたのコードに従って、操作はあなたのフィルターに従ってチェックされます。この例では、すべての操作で必要なヘッダーパラメーターを作成しますが、AllowAnonymous属性を持つ操作ではオプションにします。
public class AddAuthorizationHeader : IOperationFilter
{
/// <summary>
/// Adds an authorization header to the given operation in Swagger.
/// </summary>
/// <param name="operation">The Swashbuckle operation.</param>
/// <param name="schemaRegistry">The Swashbuckle schema registry.</param>
/// <param name="apiDescription">The Swashbuckle api description.</param>
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
if (operation == null) return;
if (operation.parameters == null)
{
operation.parameters = new List<Parameter>();
}
var parameter = new Parameter
{
description = "The authorization token",
@in = "header",
name = "Authorization",
required = true,
type = "string"
};
if (apiDescription.ActionDescriptor.GetCustomAttributes<AllowAnonymousAttribute>().Any())
{
parameter.required = false;
}
operation.parameters.Add(parameter);
}
}
2.ちょうど次のように操作フィルタを使用することを追加し、SwaggerConfigではこのOperationFilter を使用するように闊歩教える:
c.OperationFilter<AddAuthorizationHeader>();
希望、これはあなたを助け!
Swashbuckleの最新バージョンはOperationクラスを変更してパラメータフィルタクラスを削除したようですが、何かご意見は? –
私はそのフィルタを作成して、私のすべてのアクションがそれを求めるのですか?コントローラのアクションを除外するにはどうしたらいいですか? –