누군가가 github에 솔루션을 게시 했으므로 여기에 붙여 넣을 것입니다. 모든 크레딧은 그에게갑니다. https://github.com/domaindrivendev/Swashbuckle/issues/153#issuecomment-213342771
먼저 속성 클래스 작성
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)]
public class HideInDocsAttribute : Attribute
{
}
그런 다음 문서 필터 클래스를 작성하십시오.
public class HideInDocsFilter : IDocumentFilter
{
public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer)
{
foreach (var apiDescription in apiExplorer.ApiDescriptions)
{
if (!apiDescription.ActionDescriptor.ControllerDescriptor.GetCustomAttributes<HideInDocsAttribute>().Any() && !apiDescription.ActionDescriptor.GetCustomAttributes<HideInDocsAttribute>().Any()) continue;
var route = "/" + apiDescription.Route.RouteTemplate.TrimEnd('/');
swaggerDoc.paths.Remove(route);
}
}
}
그런 다음 Swagger Config 클래스에서 해당 문서 필터를 추가하십시오.
public class SwaggerConfig
{
public static void Register(HttpConfiguration config)
{
var thisAssembly = typeof(SwaggerConfig).Assembly;
config
.EnableSwagger(c =>
{
...
c.DocumentFilter<HideInDocsFilter>();
...
})
.EnableSwaggerUi(c =>
{
...
});
}
}
마지막 단계는 Swashbuckle이 문서를 생성하지 못하게하는 컨트롤러 또는 메소드에 [HideInDocsAttribute] 속성을 추가하는 것입니다.