У меня есть проект, настроенный с использованием Spring Boot с Kotlin для создания REST API.
Я пытаюсь использовать @RequestHeader
для распознавания User-Agent
. Указанный заголовок - required=true
-
@PostMapping("details", produces = ["application/json"])
fun addInfo(@RequestHeader(name = "User-Agent", required = true) userAgent: String,
@Valid @RequestBody podEntity: PodEntity): ResponseEntity<String> {
pod.addPod(podcastEntity)
return ResponseEntity<String>("{ \"status\":\"Added\" }", HttpStatus.CREATED)
}
Проблемы -
Однако, даже если я не отправляю заголовок User-Agent
, API работает. и добавление данных. Но, если я изменю заголовок на любые другие имена, не используемые по умолчанию, например, user
или request-source
, требование required=true
будет выполнено, и API не будет работать. Означает ли это, что заголовки по умолчанию нельзя сделать обязательными с помощью тега required
?
Другая проблема заключается в том, что в случае настраиваемого заголовка, когда требуемый заголовок отсутствует для запроса , API не работает, выдавая код ошибки 400, но не вызывает никаких исключений. Я ожидал HttpClientErrorException
для моего тестового примера junit, но, проверив консоль, я не увидел исключения. Добавление @Throws
тоже не помогает. Как сделать так, чтобы моя функция генерировала исключение, когда требуемый заголовок отсутствует?