Как я могу зарегистрировать Content-Type, который Spring отклоняет, с 415 Unknown Media Type? - PullRequest
0 голосов
/ 10 января 2020

У меня есть базовое c приложение Spring Boot с конечной точкой REST, настроенное на получение POST с Content-Type = application/json.

Мой внешний партнер отправляет мне HTTP-запросы, но очевидно с другим Content-Type, потому что мое приложение отклоняет эти запросы с HTTP 415. Неподдерживаемый тип носителя.

К сожалению, журналы Spring не показывают, что именно представляет собой Content-Type, и внешний партнер в настоящее время недоступен для вопросы.

Есть ли способ повысить уровень журнала Spring, чтобы журнал также включал полученные Content-Type отклонения?

1 Ответ

1 голос
/ 10 января 2020

Я вижу следующие опции, как указано в комментариях выше:

  1. Используйте внешний анализатор пакетов, такой как wireshark
  2. Используйте активатор httptrace, который вы видите пример здесь
  3. Напишите перехватчик, как вы видите здесь

Используйте привод httpTrace

httptrace предоставляет информацию об обмене запросами и ответами HTTP. Его можно вызвать, выполнив команду get / activator / httptrace. Можно использовать curl :

$ curl 'http://localhost:8080/actuator/httptrace' -i -X GET

или непосредственно из браузера, на локальном компьютере, который будет http://localhost: 8080 / привод / httptrace .

Информация предоставляется как JSON:

HTTP/1.1 200 OK
Content-Type: application/vnd.spring-boot.actuator.v3+json
Content-Length: 503

{
  "traces" : [ {
    "timestamp" : "2019-12-06T06:13:02.341Z",
    "principal" : {
      "name" : "alice"
    },
    "session" : {
      "id" : "41a5c57b-112a-4b15-8ea9-05c5942e7e88"
    },
    "request" : {
      "method" : "GET",
      "uri" : "https://api.example.com",
      "headers" : {
        "Accept" : [ "application/json" ]
      }
    },
    "response" : {
      "status" : 200,
      "headers" : {
        "Content-Type" : [ "application/json" ]
      }
    },
    "timeTaken" : 1
  } ]
}
...