我正在使用Swagger Swashbuckle 生成文档。在我的控制器中有一些方法和我的模型中有一些属性,我不想记录它们。 是否有任何属性或属性可以从文档中留下或忽略特定的方法?
我正在使用Swagger Swashbuckle 生成文档。在我的控制器中有一些方法和我的模型中有一些属性,我不想记录它们。 是否有任何属性或属性可以从文档中留下或忽略特定的方法?
对于这个方法,你有几个选项:
使用过时的属性。然后,在swagger配置中设置操作 - c.IgnoreObsoleteActions();
创建自定义属性和swagger文档过滤器。文档过滤器应该遍历每个方法,并在方法具有自定义属性时删除方法文档。
对于属性,你可以使用JsonIgnoreAttribute
。
XmlIgnore/JsonIgnore
似乎不能用于属性上。internal
。这样应该能防止序列化和生成文档。 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"));
});
}
这里有一个较新的回答:
[JsonIgnore]
[ApiExplorerSettings(IgnoreApi = true)]
仅供参考,因为我也在尝试解决JsonIgnore属性不起作用的问题...
问题似乎是由于较新版本的Swashbuckle for .Net Core默认不支持NewtonSoft所导致的。
从NuGet安装
包管理器:Install-Package Swashbuckle.AspNetCore.Newtonsoft -Version 5.6.2
CLI:dotnet add package --version 5.6.2 Swashbuckle.AspNetCore.Newtonsoft
在startup.cs中添加代码
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
});
services.AddSwaggerGenNewtonsoftSupport(); // 明确选择 - 需要放在AddSwaggerGen()之后
这对我有用,希望能帮助其他人。