我有一个基本的 Spring Boot 应用程序,其中包含一个 REST 端点,该端点配置为接收Content-Type
=application/json
的 POST。
我的外部合作伙伴正在向我发布HTTP请求,但显然使用不同的Content-Type
,因为我的应用程序拒绝了HTTP 415不支持的媒体类型的请求。
不幸的是,Spring 的日志没有显示内容类型的确切内容,外部合作伙伴目前无法回答问题。
有没有办法提高 Spring 的日志级别,以便日志还包括收到的被拒绝Content-Type
?
我看到上面评论中所述的以下选项:
- 使用外部数据包分析器,如wireshark
- 使用 httptrace 执行器,您可以在此处查看示例
- 编写一个拦截器,如下所示
使用 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
} ]
}