Как проверить сообщения protobuf в контроллере Spring Rest в параметре метода - PullRequest
0 голосов
/ 08 декабря 2018

Допустим, «TestTask» - это сгенерированный protobuf Java-класс.Я хочу отправить в конечную точку REST в виде запроса POST.

У меня вопрос, как я могу проверить «TestTask» и его поля?

  1. Имеет ли смысл добавить @Проверено вместе с @RequestBody?

[Мое мнение: Не имеет смысла добавлять @Validated, так как внутри Java-класса protobuf генерируются аннотации для нулевых или пустых проверок.]

Если я добавлю @NotNull, это будет работать?

[Мое мнение: Это должно работать по крайней мере для нулевой проверки объекта.]

Имеет ли смысл добавить обе вышеуказанные аннотации вместе с @RequestBody?

для примера, TestTaskComplete processTestTask (@Validated @RequestBody @NotNull TestTask testTask)

[MyView: @Validated -> не имеет смысла добавлять это.отдых выглядит хорошо]

@RestController
public class TestTaskEndpoint {

    @PostMapping(value = "/testTask", consumes = "application/x-protobuf", produces = "application/x-protobuf")
    TestTaskComplete processTestTask(@RequestBody TestTask testTask) {
        // TestTask is a generated protobuf class
        return generateResult(testTask);
    }
} 

1 Ответ

0 голосов
/ 18 апреля 2019

1).добавление @Validated или @Valid не работает, поскольку поля в GPB не аннотированы.2).@notNull не должен компилироваться, так как это не подходящее место для него.

один из способов, с помощью которого я думаю, что это работает, - использовать @initBinder для привязки вашего gpb к POJO и добавления аннотации проверки в вашем POJO.

Допустим, вы создали свой POJO с именем TestTaskModel, чтобы вы могли @Valid @RequestBody TestTaskModel модель)

в этом случае, я не думаю, что вам нужны расходные материалы и производит

...