使用Spring MVC @RestController
实现常见REST请求正文解包效果的最佳方法是什么?
换句话说,假设我有以下控制器:
@RestController
public class MyController {
@RequestMapping(value = "/", method = POST)
public Object hello(@RequestBody MyDTO dto) {
...
}
}
我希望实际的帖子是:
{
"version": "1.0",
"payload": {
...
}
}
可以用以下类表示:
public class ApiRequestDTO<TPayload> {
private String version;
private TPayload payload;
...
// Getters and Setters...
...
}
因此,在这种特殊情况下,客户端会发送ApiRequestDTO<MyDTO>
的实例。
我使用@ControllerAdvice
实现了相反的(响应体包装器),但我注意到它不会完全适用于请求体。我能看到的一种可能的方法是装饰所有相关的消息转换器。但我想知道是否有更好的方法?