【问题标题】:Spring Boot - Is it possible to disable an end-pointSpring Boot - 是否可以禁用端点
【发布时间】: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


    【解决方案1】:

    你可以使用@ConditionalOnExpression注解。

    public class MyController {
    
      @ConditionalOnExpression("${my.controller.enabled:false}")
      public String endpoint1() {...}
    
      public String endpoint2() {...}
    }
    

    在application.properties中,你表示控制器默认开启

    my.controller.enabled=true
    

    ConditionalOnExpression 将您的属性设置为 false,并且不允许访问端点

    【讨论】:

    • 谢谢。但这也不会禁用模型的模式。例如,在 OpenApi 中,这样做将不再显示很棒的控制器,但是,与控制器相关的所有模式(例如 EmployeeRequestModel 参数)仍将显示在 OpenApi 中。我想禁用与该控制器相关的所有内容。我会接受答案,因为我不清楚。谢谢
    【解决方案2】:

    为什么不删除该方法上的映射注释?

    【讨论】:

    • 谢谢。但这也不会禁用模型的模式。我想禁用与该控制器相关的所有内容
    【解决方案3】:

    试试这个简单的方法:您可以定义一个属性is.enable.enpoint1 以灵活的方式打开/关闭您的端点。

    如果您关闭端点,则返回404error 页面,这取决于您的情况。

    @Value("${is.enable.enpoint1}")
    private String isEnableEnpoint1;
     
    public String endpoint1() {
        if (!"true".equals(isEnableEnpoint1)) {
            return "404";  
        }
        // code
    }
     
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 2016-03-27
      • 2020-01-10
      • 2015-09-28
      • 1970-01-01
      • 2015-12-25
      • 2021-03-03
      相关资源
      最近更新 更多