【问题标题】:Disable "Try It Out" in Swagger在 Swagger 中禁用“试用”
【发布时间】:2019-04-30 05:45:22
【问题描述】:

这个问题被问了很多不同的语言。经过大量(无果)浏览后,我觉得自己很笨,但无论如何我都会问

本文档指的是在看似 Javascript 的内容中添加 Swagger 插件 https://github.com/swagger-api/swagger-ui/issues/3725

我尝试将该代码添加为注入的 Javascript 资源:

c.InjectJavaScript(thisAssembly, "MyProject.Scripts.swagger-plugins.js");

.js 文件中的代码是

const DisableTryItOutPlugin = function() {
    return {
        statePlugins: {
            spec: {
                wrapSelectors: {
                    allowTryItOutFor: () => () => false
                }
            }
        }
    }
}

const DisableAuthorizePlugin = function () {
    return {
        wrapComponents: {
            AuthorizeBtn: () => () => null
        }
    }
}

SwaggerUI({
    plugins: [
        DisableTryItOutPlugin,
        DisableAuthorizePlugin
    ]
})

这没有取得任何成果,我不知道下一步该去哪里。

【问题讨论】:

    标签: c# asp.net-mvc swagger swashbuckle


    【解决方案1】:

    你可以在 swagger 中隐藏 Try it out 按钮 (使用 swashbuckle,C# dotnet core) -

    受影响的代码行 -

    c.SupportedSubmitMethods(new Swashbuckle.AspNetCore.SwaggerUI.SubmitMethod[] { }
    
    

    整个代码示例 - (在配置方法中添加)

     app.UseSwaggerUI(c =>
                {
                    c.SwaggerEndpoint("/swagger/test/swagger.json", "test API");
                    c.SupportedSubmitMethods(new Swashbuckle.AspNetCore.SwaggerUI.SubmitMethod[] { });
                });
    

    这是可行的,因为我们使用了 SubmitMethod 枚举,其中包含以下值 -

        public enum SubmitMethod
        {
            Get = 0,
            Put = 1,
            Post = 2,
            Delete = 3,
            Options = 4,
            Head = 5,
            Patch = 6,
            Trace = 7
        }
    

    【讨论】:

      【解决方案2】:

      您可以在 startup.cs 文件的 Configure 方法中尝试这些行

      app.UseSwaggerUI(c =>
                    {
                        if (!env.IsDevelopment())
                           c.SupportedSubmitMethods(new SubmitMethod[] { });
      
                        c.SwaggerEndpoint("/swagger/swagger.json", "API");
                    });
      

      【讨论】:

        【解决方案3】:

        直接尝试禁用/隐藏相应按钮即可:

        $(() => {
            $('.tryitout').prop('disabled', true);
        })
        

        【讨论】:

        • 这不会阻止任何人。您可以通过 Web 控制台重新启用它。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-07-04
        • 2019-07-07
        • 2021-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多