我有一个使用Spring Boot构建的API应用程序。我使用 swagger-springmvc v0.9.5插件以及Swagger UI生成API方法的实时文档和交互前端。
我最近向应用程序介绍了Spring安全性和OAuth。这引入了Swagger UI中出现的更多部分:
/oauth/authorize
路径下有一堆HTTP操作/oauth/check_token
路径下有一堆HTTP操作/oauth/confirm_access
路径下有一堆HTTP操作/oauth/error
路径下有一堆HTTP操作我可以理解它们的用途,但我不希望它们出现在我的Swagger UI前端。我该如何隐藏它们?
com.mangofactory.swagger.plugin.SwaggerSpringMvcPlugin的配置确实提供了includePatterns()方法,但无法排除模式。使用includePatterns()每次有人向API添加方法时,都需要记住将其添加到那里,这并不理想。我没有所有API方法的公共前缀,我可以使用includePatterns()和。
答案 0 :(得分:0)
我有同样的问题。 我通过改变Docket创建参数来解决它。 我正在使用
@Bean
public Docket oAuthService() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build()
.pathMapping("/")
.directModelSubstitute(LocalDate.class,
String.class)
.genericModelSubstitutes(ResponseEntity.class)
.alternateTypeRules(
newRule(typeResolver.resolve(DeferredResult.class,
typeResolver.resolve(ResponseEntity.class, WildcardType.class)),
typeResolver.resolve(WildcardType.class)))
.useDefaultResponseMessages(false)
.globalResponseMessage(RequestMethod.GET,
newArrayList(new ResponseMessageBuilder()
.code(500)
.message("500 message")
.responseModel(new ModelRef("Error"))
.build()))
.securitySchemes(newArrayList(apiKey()))
.securityContexts(newArrayList(securityContext()))
.enableUrlTemplating(true)
.tags(new Tag("Oauth Service", "Oauth Service"));
}
这导致所有spring-oauth端点成为我的swagger规范的一部分。 我更改了注册的api以使用我的basePackage而不是any()。 像这样:
.apis(RequestHandlerSelectors.basePackage("my.base.package.name"))
答案 1 :(得分:0)
您只需接受除/oauth.*
.select()
.paths(input ->
!PathSelectors.regex("/oauth.*").apply(input) &&
PathSelectors.any().apply(input))
.build()