最近我对一个API进行了更改,起初应该是向后兼容的,但由于客户端的原因,我的端点开始响应“400 Bad Request”。我所做的是在PUT端点中添加可选的RequestBody,这不应该引起任何问题,因为它是可选的,但客户端发送了空字符串值,无法反序列化为对象,Jackson无法反序列化。
我的DTO对象:
在调试发送到端点的内容时,我注意到这些标头:
我尝试编写自己的反序列化程序,但对于这种情况创建反序列化程序似乎是一种开销。
我的DTO对象:
data class TestRequest(@field:Future val expiresDatetime: Instant? )
端点定义:
@PutMapping("/{testId}/revoke")
fun revoke(
@PathVariable testId: String,
@Valid
@RequestBody(required = false)
request: TestRequest? = null,
): TestRevokeResponse =
testService.revoke(testId, request)
在调试发送到端点的内容时,我注意到这些标头:
Content-Type: application/json content-type: application/json; charset=utf-8 content-length: 2
负载为:""
有没有一种方法可以将空字符串默认为null而不编写自定义反序列化程序?我尝试编写自己的反序列化程序,但对于这种情况创建反序列化程序似乎是一种开销。