【问题标题】:Add Swagger dependencies only for development enviroment仅为开发环境添加 Swagger 依赖项
【发布时间】:2022-07-14 17:26:24
【问题描述】:

根据 Microsoft documentation,我们应该为所有 env 添加 swagger 依赖项。

builder.Services.AddSwaggerGen();

但仅为开发者启用 UI。

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

为什么?只为 dev env 添加依赖项不是更有意义吗?喜欢:

if (app.Environment.IsDevelopment())
{
    builder.Services.AddSwaggerGen();
}

【问题讨论】:

  • 按照你的建议做就行了吗?
  • (我觉得这是 a) 工作的情况之一,所以你需要ask Microsoft“为什么当 Y 工作时你的文档说 X并且看起来更明智?” - 这里离题了,因为我们不能权威地谈论微软团队的想法,所以这里没有问题要回答,或者 b) 它不起作用,因此这里没有问题要回答..)
  • 它按我的预期工作:在 dev 上加载 swagger 依赖项和 swagger 配置 - application+swagger 有效。在测试中,您不会加载 swagger 依赖项和 swagger 配置 - 只有应用程序有效。
  • 那么你的情况是 a) - 你需要问微软他们的想法是什么(我为 dotnet 文档链接了 GitHub),或者他们可能会同意并更新他们的文档。这不是我们可以帮助的事情

标签: c# dependency-injection swagger swashbuckle


【解决方案1】:

AddSwaggerGen 方法包含服务注册,以便 swagger 工作。 以下是文档对我们说的话:

Swashbuckle.AspNetCore.SwaggerGen 注入上述组件可以使用的 ISwaggerProvider 实现。这个特定的实现从你的路由、控制器和模型生成 OpenApiDocument(s)

如果您排除了某些环境:

app.UseSwagger();
app.UseSwaggerUI();

您也可以排除 AddSwaggerGen 没有任何问题。

【讨论】:

    猜你喜欢
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多