我正在嘗試在 post 方法中驗證 JSON 正文。這是一個示例代碼:
@PostMapping(value = "GetInfo")
public ResponseEntity<Person> getOffers(@Valid @RequestBody InfoRequest infoRequest) {
//generate person response according to inforequest JSON.
Person person = PersonGenerator.getOffers(infoRequest);
return new ResponseEntity<>(person, HttpStatus.OK);
}
當我發送 JSON 正文以獲取資訊(例如:Name和Age)時,如果輸入了一些Person類不需要的額外欄位,我希望程式拋出錯誤。作為下面的示例ExtraField。但是@RequestBody和@Valid注釋只是檢查匹配的欄位。由于它被過濾(在這種情況下 afaikExtraField被過濾)我無法獲得完整的 JSON 來分析infoRequest以查找是否發送了任何額外的資訊。
{
"Name": "sample",
"Age": "sample",
"ExtraField": "prevent",
}
我知道有一些庫可以檢查 JSON 檔案。但首先我必須知道會發生什么:)。如果沒有注解,可以看到額外輸入的欄位。如何提取和分析 JSON 檔案*
注意:infoRequest出于安全目的,將引數型別更改為字串不是一個選項。
uj5u.com熱心網友回復:
默認情況下,Spring Boot 配置將禁用 JacksonDeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES功能。一種可能的解決方案可能是在您的application.yml檔案中再次啟用它,如下所示:
spring.jackson.deserialization.fail-on-unknown-properties=true
ObjectMapper如果您想要更細粒度的配置,這將改變 Jackson 的行為,@JsonIgnoreProperties(ignoreUnknown = false)如下所示:
@JsonIgnoreProperties(ignoreUnknown = false)
public class InfoRequest {
(...)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/362657.html
上一篇:短信未保存在資料庫中
