Swagger文档:Swashbuckle(隐藏方法/属性)

时间:2016-11-16 13:13:39

标签: swagger swashbuckle

我正在使用Swagger Swashbuckle来生成文档。我的控制器中有一些方法,我的模型中有一些我不想记录的属性。 是否有任何arrtibute或属性要离开或忽略文档中的特定方法?

4 个答案:

答案 0 :(得分:1)

对于该方法,您有两个选项:

  1. 使用过时属性。然后,您必须在招摇配置

  2. 中设置操作 - c.IgnoreObsoleteActions();
  3. 创建自定义属性和招摇文档过滤器。如果方法具有自定义属性,文档过滤器应遍历每个方法并删除方法文档

  4. 对于属性,您可以使用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(),它会隐藏文档中的属性。

当作为POST请求正文的一部分收到时,

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
    

这对我有用,希望这对其他人有帮助。