是否可以使用@RepositoryRestController来受益于绑定,自动验证和持久化Header数据,同时还可以管理@RequestBody中的二进制数据?
考虑对API的以下调用,上传文档:
curl -X POST /document \
--header "Custom-Header: {\"dimensions\": \"200x300\" }" \
--header "Content-Type: application/octet-stream" \
--data-binary @file.pdf
使用Metadata.class和一个愚蠢的示例验证器:
public class Metadata {
@Size(max = 20)
String dimensions;
// Some other code
}
主计长将如何获得最佳选择?这(以及许多替代方法)似乎没有完成这项工作:
@RepositoryRestController
public class MetadataController {
@PostMapping("/document")
public @ResponseBody Metadata uploadDocument(@RequestHeader("Custom-Header") String dimensions,
@Valid Metadata metadata) {
// do something with the @RequestBody
}
我应该提到 dimensions 值和验证程序是任意的;足以说在这种情况下,元数据仅与当前域中的文件相关,因此不应将其嵌入文件本身。
使用这种设置提供自定义错误处理也将是一件好事,在这种情况下,这似乎也很复杂。