Swagger 招摇过市文档:招摇过市(隐藏方法/属性)
我正在使用Swagger生成文档。我的控制器中有一些方法,模型中有一些属性我不想记录。Swagger 招摇过市文档:招摇过市(隐藏方法/属性),swagger,swashbuckle,Swagger,Swashbuckle,我正在使用Swagger生成文档。我的控制器中有一些方法,模型中有一些属性我不想记录。 是否有任何arrtibute或属性可以保留或忽略文档中的特定方法?对于该方法,您有两个选项: 使用过时属性。然后,您必须设置操作-c.ignoreobsoletActions()在招摇过市配置中 创建自定义属性和招摇过市文档过滤器。如果方法具有自定义属性,文档过滤器应该遍历每个方法并删除方法文档 对于属性,您可以使用JsonIgnoreAttribute除了c.IgnoreObsoleteActions(),
是否有任何arrtibute或属性可以保留或忽略文档中的特定方法?对于该方法,您有两个选项:
c.ignoreobsoletActions()代码>在招摇过市配置中
对于属性,您可以使用
JsonIgnoreAttribute
除了c.IgnoreObsoleteActions()
,还有c.IgnoreObsoleteProperties()
,它从文档中隐藏属性
JsonIgnoreAttribute
将在作为POST请求正文的一部分接收时停止属性反序列化,如果您只希望更改文档而不希望更改功能,则这可能不是您想要的。在较新版本的Swashback(Core2/3)中XmlIgnore/JsonIgnore
似乎不适用于属性。或者,您可以将“属性访问”修改器更改为
internal
。这将防止序列化和生成文档
我不确定是否要隐藏整个控制器,您可能需要在您的招摇过市设置中添加过滤器。我确实有一个隐藏某些端点的示例(为了方便起见,我为本地运行添加了前缀路由):
public void配置服务(IServiceCollection服务)
{
...
services.AddSwaggerGen(配置=>{
config.SwaggerDoc(“v1”,
新OpenApiInfo{
Version=“v1”,
Title=“fooapi”,
Description=“不做任何事情。”,
Contact=newopenapicontact{
Name=“否”,
电子邮件=”mail@example.org",
},
});
//在Swagger文档中包含XML注释
var xmlFile=$“{Assembly.getExecutionGassembly().GetName().Name}.xml”;
var xmlPath=Path.Combine(AppContext.BaseDirectory,xmlFile);
config.includexmlcoments(xmlPath);
//过滤掉带前缀的路由
config.DocInclusionPredicate(
(名称,desc)=>!desc.RelativePath.ToLower().StartsWith(“MyDevPrefix”);
});
}
只是一个注意事项,因为我还试图找出不起作用的属性的JsonIgnore
问题似乎在于.Net Core的新版本Swashback不支持NewtonSoft开箱即用
- 从NuGet安装
Package Manager : 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(); // explicit opt-in - needs to be placed after AddSwaggerGen()
这对我来说很有效,希望对其他人有所帮助。第二种方法有什么例子吗?我使用decorator[Obsolete]作为我想要隐藏在swagger中的属性,并在启动时放置c.IgnoreObsoletProperties()。虽然属性隐藏在swagger中,但在响应中仍然可见。我使用asp.net内核。如何在swagger中隐藏一个对用户完全可见的属性?如果您也试图隐藏响应,我认为您希望像Simlly John的回答一样,对属性使用JsonIgnoreAttribute