使用Asp.net和Swagger来仅显示特定的端点。

6 浏览
0 Comments

使用Asp.net和Swagger来仅显示特定的端点。

是否可能默认隐藏Swagger中的所有端点,并只显示我用某种属性标记的端点?

0
0 Comments

问题:如何使用Asp.net和Swagger只显示特定的端点?

原因:在使用Asp.net和Swagger构建API文档时,有时希望只显示特定的端点而不是全部端点。这可能是因为某些端点是测试用的,或者因为有一些敏感的端点不希望被公开。

解决方法:通过在控制器上添加特定的属性来解决这个问题。可以使用[ApiExplorerSettings(IgnoreApi = true)]属性来忽略所有端点,然后通过将IgnoreApi = false属性设置为希望显示的端点来取消忽略。

另外,如果将IgnoreApi = false属性应用于特定的方法,那么只有该方法将被忽略。

通过这种方式,可以方便地控制Swagger文档中显示的端点,使其更加清晰和易于使用。

0
0 Comments

ASP.NET和Swagger用于只显示特定的端点

在ASP.NET中,我们可以使用[ApiExplorerSettings(IgnoreApi = true)]属性来隐藏特定的控制器或操作。如果我们从ApiController继承,我们可以创建自己的基础控制器,然后在其中标记需要隐藏的控制器或操作。如果我们标记了基础控制器,那么我们需要手动标记操作或控制器:

[ApiExplorerSettings(IgnoreApi = false)]

如果我们想隐藏某些不再使用的端点,但仍然保留代码,我们可以采取两种方法:

1. 将这些方法的访问修饰符更改为private

2. 使用[Obsolete]属性标记要隐藏的所有项,并在启动时更改Swagger配置:

httpConfiguration.EnableSwagger(c =>
{
    c.IgnoreObsoleteActions();
});

如果我们想要反转这个逻辑而不用标记所有的操作和控制器,有办法吗?

如果我们从自己的基础控制器继承,那么我们只需要标记单个控制器,然后其他所有内容都将被隐藏。如果我们从ApiController继承,我们可以创建自己的基础控制器,然后在其中标记需要隐藏的控制器或操作。不需要对单个操作进行标记,因为它将遵循控制器的属性。

0