簡體   English   中英

在 Spring 的 GET 請求中將請求參數/路徑變量映射到 Dto

[英]Mapping request params/ path variable to Dto in GET request in Spring

我想創建一個 controller,它將返回頁面 object。 我將需要Pageable頁面具有頁碼及其大小(不能大於 50)和一些將成為搜索條件的變量。 如果這是一個 POST 請求,它可能如下所示:

public Page<SomeDto) getDto(@RequestBody @Valid RequestDto requestDto, Page pageRequest)

但是,它是一個 GET 請求,因此不能/不應該使用@RequestBody 此外,我想要類似於@Valid 的東西,以便 Spring 會自動拒絕錯誤的請求。

我想知道是否:

  1. 有可能以及如何實現這一點,並且已經從 URL(@PathVariable 或 @RequestParam)中獲取的值創建了 Dto,就好像它是將主體映射到 object 的 POST 請求一樣。

我想避免使用某種代碼:

public String updateFoos(@RequestParam Map<String,String> allParams) {}

  1. 如果第 1 條中描述的內容是不可能的,那么最接近滿足這些要求的解決方案是什么?

無論使用什么 HTTP 方法,每個 HTTP 請求都可以有一個 HTTP 主體(因此也有一個@RequestBody )。 However, it is not a good REST API design to use a HTTP body for GET request (cf. https://martinfowler.com/articles/richardsonMaturityModel.html )

您可以使用 @PathVariable 或 @RequestParam arguments 進行 bean 驗證,您只需將所需的注釋放在這些注釋旁邊

暫無
暫無

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

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