Можно ли использовать @RepositoryRestController для получения выгоды от привязки, автоматической проверки и сохранения данных заголовка, а также для управления двоичными данными в @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
}
Я должен отметить, что значение размеры и валидатор являются произвольными;Достаточно сказать, что в этом сценарии метаданные имеют отношение только к файлу в текущем домене и поэтому не должны быть встроены в сам файл.
Было бы также хорошо обеспечить настраиваемую обработку ошибок с такимиустановка, которая также кажется сложной в таком сценарии.