簡體   English   中英

如何在方法參數中的Spring Rest控制器中驗證protobuf消息

[英]How to validate protobuf messages in a Spring Rest controller in method parameter

假設“ TestTask”是protobuf生成的java類。 我想作為POST請求發送到REST端點。

我的問題是如何驗證“ TestTask”及其字段?

  1. 將@Validated和@RequestBody一起添加是否有意義?

[我的觀點:添加@Validated沒有任何意義,因為內部protobuf java類確實會為空檢查或空檢查生成任何注釋。 ]

  1. 如果我添加@NotNull,它將起作用嗎?

[我的觀點:它至少應對對象進行空檢查。 ]

  1. 將上面的注釋和@RequestBody一起添加是否有意義?

例如,TestTaskComplete processTestTask(@Validated @RequestBody @NotNull TestTask testTask)

[我的觀點:@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)。 添加@Validated或@Valid無效,因為GPB中的字段未注釋。 2)。 @notNull不應編譯,因為它不合適。

我認為它起作用的一種方法是使用@initBinder將gpb綁定到POJO並在POJO中添加驗證批注。

假設您創建名為TestTaskModel的POJO,以便可以@Valid @RequestBody TestTaskModel模型)

在這種情況下,我認為您不需要消耗和生產

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM