如何从ServiceStack的SwaggerFeature中隐藏我无法控制的路由?

时间:2016-11-04 18:32:24

标签: servicestack swagger swagger-ui

在我的示例中,我正在使用ApiKeyAuthProviderRegistrationFeature,,它们都会向我的元数据添加新路由。

我想使用swagger作为这些服务的主要文档,但我不希望出现/AssignRoles之类的内容。

我正在探索OperationFilter,但我很难搞清楚该做什么。

我该怎么做才能隐藏这些不需要的路线?

1 个答案:

答案 0 :(得分:3)

您可以添加.NET Attributes at runtime来控制您无法使用ServiceStack的内置Restriction attributes控制的服务的可见性,例如要仅允许localhost显示属性,您可以将限制属性添加到AppHost中的特定请求DTO:

typeof(AssignRoles)
  .AddAttributes(new RestrictAttribute { VisibleLocalhostOnly = true });
typeof(UnAssignRoles)
  .AddAttributes(new RestrictAttribute { VisibleLocalhostOnly = true });

要为所有请求隐藏它,您可以将可见性设置为无:

typeof(AssignRoles)
  .AddAttributes(new RestrictAttribute { VisibilityTo=RequestAttributes.None });
typeof(UnAssignRoles)
  .AddAttributes(new RestrictAttribute { VisibilityTo=RequestAttributes.None });

注意,当Debug=true自动启用调试构建时,它们仍会显示在开发模式中,以模拟版本构建,您可以将其设置为false,例如:

SetConfig(new HostConfig {
    DebugMode = false
});