我是 kotlin 的新手,到目前為止,我有 2 個選項可以不對傳入的 HTTP 請求進行空白驗證,因為空白字串在 kotlin 空值檢查中被視為有效值。
- 驗證類初始化函式
data class Foo(val key: String) {
init {if (this.key.isEmpty()) throw Exception("Invalid Request")}
}
- 使用 javax 注釋進行驗證
data class Foo(@field.NotBlank val key: String)
兩種方法都按預期作業,我只是好奇在 kotlin 中最好的方法是什么。恐怕我的 kotlin 代碼是 java 的,那時我使用 kotlin 沒有用
uj5u.com熱心網友回復:
如果要驗證傳入請求,請選擇第二個選項。
考慮擁有多個屬性,假設您有以下類:
data class User(val name: String, val surname:String)
然后你必須為每個欄位撰寫驗證。如果姓名和姓氏都為空怎么辦?名稱驗證會引發錯誤,您將名稱添加到請求和 BAM,姓氏驗證會引發錯誤。
data class User(val name: String, val surname:String) {
init {
if (this.name.isEmpty()) throw Exception("Name is missing")
if (this.surname.isEmpty()) throw Exception("Surname is missing)
}
}
您可以一次驗證所有內容,例如使用 OR,但是您會丟失顯式錯誤 - 出了什么問題?空名?空姓?兩個都是空白……?
data class User(val name: String, val surname:String) {
init {
if (this.name.isEmpty() || this.surname.isEmpty()) throw Exception("Name or surname is missing")
}
}
現在想想三個、四個、五個欄位。
如果你正確使用 javax.validation,你必須只寫注解,其余的由框架完成——它會明確地說出什么問題,在哪個欄位上,因為它檢查所有約束以及是否有任何違規,它會引發包含所有違規詳細資訊的錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/422676.html
標籤:
上一篇:在IntegrationFlow中使用DirectChannel的SpringIntegration拋出“Dispatcher沒有訂閱者”
