【发布时间】:2022-06-30 01:29:23
【问题描述】:
假设我有这样的控制器:
public class MyController {
public String endpoint1() {...}
public String endpoint2() {...}
}
无论出于何种原因,我都想在 Spring 中禁用 endpoint1。简单地说,只需禁用它,使其无法访问。因此,我不是在寻找在这种情况下如何以及返回什么响应,或者如何保护该端点。只是想简单地禁用端点,比如 @Disabled 注释左右。
解决方案更新:
感谢所有贡献的人。我决定接受@AdolinK 的建议。但是,该解决方案只会禁用对控制器的访问,从而导致 404 Not Found。但是,如果您使用 OpenApi,您的控制器及其所有模型(例如请求/响应正文)仍会以 swagger 的形式显示。
所以,除了 Adolin 的建议之外,还向我的控制器添加了 @Hidden OpenApi 注释,例如:
在 application.properties 中,设置:
cars.controller.enabled=false
@Hidden
@ConditionalOnExpression("${cars.controller.enabled}")
@RestController
@RequestMapping("/cars")
public class Carontroller {
...
}
在此之后,此控制器处理的每个端点都将返回 404 Not Found,并且 OpenApi/Swagger 不会显示控制器或其任何相关架构对象,例如 CarRequestModel、CarResponseModel 等。
【问题讨论】:
标签: spring-boot openapi