在Spring Controller中绑定自定义RequestHeader和RequestBody

时间:2019-02-03 22:34:49

标签: hibernate rest api spring-boot

是否可以使用@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 值和验证程序是任意的;足以说在这种情况下,元数据仅与当前域中的文件相关,因此不应将其嵌入文件本身。

使用这种设置提供自定义错误处理也将是一件好事,在这种情况下,这似乎也很复杂。

0 个答案:

没有答案