Handling Null in Request DTO
About
Springμ 컨νΈλ‘€λ¬μμ @RequestBody
μ΄λ
Έν
μ΄μ
μ μ΄μ©νλ©΄ HTTP bodyμ μλ JSON λ°μ΄ν°λ₯Ό κ°μ²΄λ‘ λ³νν΄ λ°μμ¬ μ μλ€. JSONμ μλ λͺ¨λ λ°μ΄ν°κ° κΌ νμνμ§ μμμ μ€μ§ μμΌλ©΄ 무μνλ κ²½μ°λ μμ§λ§, μ λΆ νμν μλ μλ€.
Java
Javaμμλ null checkingμ μΈμ΄ μ°¨μμμ μ§μνκ³ μμ§λ μλ€. νμ§λ§ Validationμ μ΄λ Έν μ΄μ μ ν΅ν΄ κ²μ¦ν μ μλ€.
@NotNull
μ΄λ
Έν
μ΄μ
μΌλ‘ age
κ° null
μ΄λ©΄ μ€λ₯λ₯Ό λ°ννλ€.
Kotlin
μ½νλ¦°μμλ nullable νμ κ³Ό non-nullable νμ μ ꡬλΆνμ¬ null safeνκ² κ°λ°ν μ μλ€. κ·Έλ°λ° μ½κ°μ μ£Όμκ° νμνλ€.
μΌλ¨ μμ μ½λλ₯Ό μ½νλ¦°μΌλ‘ λ°λ‘ λ°κΎΈλ©΄ μ΄λ κ² λ κ²μ΄λ€.
νμ§λ§ μ¬κΈ°μ μ¬λ¬ κ°μ§λ₯Ό μμ ν΄μΌ νλ€.
μ½νλ¦°μ nullableκ³Ό non-nullable νμ μ νμ λ€μ
?
λ₯Ό λΆμ΄λ κ²μΌλ‘ ꡬλΆνλ€. λ°λΌμage
λ μ μ΄μnull
μ΄ λ μ μλ€.μ΄λ κ² μμ±νμ λ ageκ° nullλ‘ λ€μ΄μ€κ² λλ€λ©΄,
@field:NotNull
μ΄λ Έν μ΄μ μ ν΅ν΄ validation λ‘μ§μ΄ μ€νλκΈ° μ μ λ³μμ κ°μ ν λΉνλ κ³Όμ λΆν° μμΈκ° λ°μνλ€. λ°λΌμ μ¬κΈ°μ μ΄ μ΄λ Έν μ΄μ μ μλ―Έκ° μλ€.μλ
@NotNull
μ΄ λΆμ΄μμ§ μμλimageUrl
μ nullable νμ μ΄ λμ΄μΌκ² λ€.
μμ μ¬νμ λ°μν λ μ΄λ κ² ν΄κ²°νλ λ°©λ²μ΄ μλ€.
λ€λ§ ν΄λΉ DTOλ₯Ό 컨νΈλ‘€λ¬μμ λ°μμ μ¬μ©νκ² λ ν
λ°, age
λ μ€μ λ‘ nullμ΄ μλμλ λΆκ΅¬νκ³ age
λ€μ ?
λ₯Ό λΆμ΄λ λ± null checkingμ μ§νν΄μΌ νλ€. λΆνΈνκΈ°λ νκ³ , κΉλνμ§λ μλ€.
Solution
λ΄ μκ°μ μ΄ λ°©λ²μ΄ κ°μ₯ κΉλν κ² κ°λ€. λ€μκ³Ό κ°μ΄ μ§ννμ.
nullλ‘ λ°μλ λλ νλλ λ¨μν
?
λ₯Ό λΆμΈλ€. μλλ©΄ λΆμ΄μ§ λ§.ProfileUpdateRequest.ktHttpMessageNotReadableException
μ exception handlerμμ μ‘κ³ , νμνλ€λ©΄ μΆκ° μμ μ ν΅ν΄MissingKotlinParameterException
μ λ΄λΆμ μΌλ‘ νμ μ 체ν¬ν΄ λ©μμ§λ₯Ό λ°ννλ€.
μ°Έκ³ λ‘, non-nullable νμ
μ nullμ΄ λ΄κΈ°λ €κ³ νλ©΄ HttpMessageNotReadableException
μ΄ λ°μνμ§λ§, μμΈκ° λ°μν μ§μ§ μμΈμΈ MissingKotlinParameterException
κ³Όλ μ§μ μ μΈ ν΄λμ€ κ΄κ³κ° μλ€.
REF
Yoon Sung's Blog - Kotlin + Spring μμ Dtoμ null μμ²μ λ°μμλ μ²λ¦¬νκΈ°
ν΄λΉ μ΄μμ κ΄λ ¨νμ¬ μμΈνκ² μ νμλ€. λͺ¨λ λ΄μ©μ μ΄ κΈμ μ°Έκ³ νλ€.
Last updated