是否可以使用Spring或boot验证URI pathparam是否为空?

时间:2018-10-29 14:35:37

标签: java spring rest spring-mvc spring-boot

我需要知道是否有可能在REST URI中验证pathvariable值。

示例:http://loacalhost:8080/config/test/ {id} /计划

如果请求是http://loacalhost:8080/config/test//plan而没有id,我需要抛出异常,例如id必须。是否有可能做到这一点。解决方案是可观的

3 个答案:

答案 0 :(得分:1)

默认情况下已经是必需的,并且如果缺少该异常,则会抛出一个异常。来自the documentation

  

public abstract boolean required   
  
path变量是否为   是必需的。

默认为true,如果发生则引发异常   传入请求中缺少路径变量。切换到   如果希望使用null或Java 8 java.util,则返回false。   例如在用于不同请求的ModelAttribute方法上。

强调地雷

答案 1 :(得分:0)

您可以使用Optional

@GetMapping("/config/test/{id}")
public ResponseEntity<?> doGet(@PathVariable("id") Optional<Integer> id) {
    Integer idValue = id.orElseThrow(new IllegalArgumentException("Id is required"));
}

答案 2 :(得分:0)

您只需在端点方法中将参数标记为“ required”即可