在Swagger中禁用“尝试一下”

时间:2019-04-30 05:45:22

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

对于不同的语言,这个问题已经问了很多。经过大量的(无结果的)浏览之后,我感觉自己很笨,但是我还是要问

本文档涉及在看起来像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
    ]
})

那什么都没实现,我也不知道下一步该怎么做。

3 个答案:

答案 0 :(得分:5)

您可以隐藏(使用swashbuckle,C#dotnet核心)中的“试用”按钮-

受影响的代码行-

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

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

 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
    }

答案 1 :(得分:1)

只需尝试直接禁用/隐藏相应的按钮:

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

答案 2 :(得分:1)

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

app.UseSwaggerUI(c =>
              {
                  if (!env.IsDevelopment())
                     c.SupportedSubmitMethods(new SubmitMethod[] { });

                  c.SwaggerEndpoint("/swagger/swagger.json", "API");
              });