Поведение @RequestHeader не такое, как ожидалось; работа без необходимого User-Agent - PullRequest
0 голосов
/ 10 июля 2020

У меня есть проект, настроенный с использованием 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)
    }

Проблемы -

  1. Однако, даже если я не отправляю заголовок User-Agent, API работает. и добавление данных. Но, если я изменю заголовок на любые другие имена, не используемые по умолчанию, например, user или request-source, требование required=true будет выполнено, и API не будет работать. Означает ли это, что заголовки по умолчанию нельзя сделать обязательными с помощью тега required?

  2. Другая проблема заключается в том, что в случае настраиваемого заголовка, когда требуемый заголовок отсутствует для запроса , API не работает, выдавая код ошибки 400, но не вызывает никаких исключений. Я ожидал HttpClientErrorException для моего тестового примера junit, но, проверив консоль, я не увидел исключения. Добавление @Throws тоже не помогает. Как сделать так, чтобы моя функция генерировала исключение, когда требуемый заголовок отсутствует?

...