如何记录 Spring 拒绝的 415 未知媒体类型的内容类型?



我有一个基本的 Spring Boot 应用程序,其中包含一个 REST 端点,该端点配置为接收Content-Type=application/json的 POST。

我的外部合作伙伴正在向我发布HTTP请求,但显然使用不同的Content-Type,因为我的应用程序拒绝了HTTP 415不支持的媒体类型的请求。

不幸的是,Spring 的日志没有显示内容类型的确切内容,外部合作伙伴目前无法回答问题。

有没有办法提高 Spring 的日志级别,以便日志还包括收到的被拒绝Content-Type

我看到上面评论中所述的以下选项:

  1. 使用外部数据包分析器,如wireshark
  2. 使用 httptrace 执行器,您可以在此处查看示例
  3. 编写一个拦截器,如下所示

使用 httpTrace 执行器

httptrace 提供有关 HTTP 请求/响应交换的信息。它可以通过执行 get to/actuator/httptrace 来调用。可以使用卷曲:

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

或直接从您的浏览器,在您的本地计算机上 http://localhost:8080/actuator/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
} ]
}

相关内容

  • 没有找到相关文章

最新更新