Связывание пользовательских RequestHeader и RequestBody в Spring Controller - PullRequest
0 голосов
/ 04 февраля 2019

Можно ли использовать @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
    }

Я должен отметить, что значение размеры и валидатор являются произвольными;Достаточно сказать, что в этом сценарии метаданные имеют отношение только к файлу в текущем домене и поэтому не должны быть встроены в сам файл.

Было бы также хорошо обеспечить настраиваемую обработку ошибок с такимиустановка, которая также кажется сложной в таком сценарии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...