我正在使用Swagger Swashbuckle来生成文档。我的控制器中有一些方法,我的模型中有一些我不想记录的属性。 是否有任何arrtibute或属性要离开或忽略文档中的特定方法?
答案 0 :(得分:1)
对于该方法,您有两个选项:
使用过时属性。然后,您必须在招摇配置
c.IgnoreObsoleteActions();
创建自定义属性和招摇文档过滤器。如果方法具有自定义属性,文档过滤器应遍历每个方法并删除方法文档
对于属性,您可以使用JsonIgnoreAttribute
答案 1 :(得分:1)
除了var countOccurrence = function(array, value) {
var n =array.length - 1;
if(n===0) {
return array[0] === value ? 1 : 0;
} else {
if(array[n] === value) {
return 1 + countOccurrence(array.slice(0,n), value)
} else {
return countOccurrence(array.slice(0,n), value)
}
}
};
之外,还有c.IgnoreObsoleteActions()
,它会隐藏文档中的属性。
c.IgnoreObsoleteProperties()
将停止反序列化属性,如果您只想更改文档而不是功能,则可能不是您想要的。
答案 2 :(得分:0)
在Swashbuckle(Core2 / 3)的最新版本中,XmlIgnore/JsonIgnore
似乎不适用于属性。
或者,您可以将属性访问修饰符更改为internal
。这样可以防止序列化和生成文档。
我不确定要隐藏整个控制器,您可能需要在Swagger设置中添加过滤器。我确实有一个隐藏某些端点的示例(为方便起见,我为在本地运行的路由添加了前缀):
public void ConfigureServices(IServiceCollection services)
{
...
services.AddSwaggerGen(config => {
config.SwaggerDoc("v1",
new OpenApiInfo {
Version = "v1",
Title = "Foo API",
Description = "Does foo things.",
Contact = new OpenApiContact {
Name = "nope",
Email = "mail@example.org",
},
});
// Include XML comments in Swagger docs
var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
config.IncludeXmlComments(xmlPath);
// Filter out prefixed routes
config.DocInclusionPredicate(
(name, desc) => !desc.RelativePath.ToLower().StartsWith("MyDevPrefix"));
});
}
答案 3 :(得分:0)
只是一个注释,因为我还试图找出JsonIgnore的属性不起作用...
问题似乎是Swashbuckle for .Net Core的较新版本不立即支持NewtonSoft。
从NuGet安装
WIX_UPGRADE_DETECTED
将代码添加到startup.cs
Package Manager : Install-Package Swashbuckle.AspNetCore.Newtonsoft -Version 5.6.2
CLI : dotnet add package --version 5.6.2 Swashbuckle.AspNetCore.Newtonsoft
这对我有用,希望这对其他人有帮助。