如何检查 header 不为空?

How to check that header is not empty?

我的端点中有一个类型为 UUID 的 header。我如何验证它不为空(--header 'My-Header;' \ 在 curl 中)并抛出异常(我将使用 @ExceptionHandler)以防它为空?

@RequestHeader(value = "My-Header") final UUID myHeader
    @GetMapping("/nonRequiredHeader")
public ResponseEntity<String> evaluateNonRequiredHeader(
  @RequestHeader(value = "optional-header", required = false) String optionalHeader) {
    return new ResponseEntity<String>(String.format(
      "Was the optional header present? %s!",
        (optionalHeader == null ? "No" : "Yes")),HttpStatus.OK);
}

请关注:https://www.baeldung.com/spring-rest-http-headers 了解更多信息

如你所说

and throw an exception (I'm going to use @ExceptionHandler)

在你的控制器方法中保持原样@RequestHeader(value = "My-Header") final UUID myHeader

required 该注解的属性默认为真!

并且根据文档,在缺少的情况下会抛出 MissingRequestHeaderException 异常。

那么你可以处理这个异常

@ControllerAdvice
public class ErrorHandler {

    @ExceptionHandler(MissingRequestHeaderException.class)
    public ResponseEntity handleMissingHeaderException(MissingRequestHeaderException e) {
        return return ResponseEntity.badRequest().body(String.format("%s header is missing from the request", e.getHeaderName()));
    }
}

这样您也可以处理其他控制器方法中丢失的 headers。