Home > Spring > πŸƒ[Spring] API μŠ€νŽ™, HTTP Bodyκ°€ λ™μΌν•œ 경우 DTOλ₯Ό μƒˆλ‘œ λ§Œλ“œλŠ”κ²Œ μ’‹μ„κΉŒμš”?

πŸƒ[Spring] API μŠ€νŽ™, HTTP Bodyκ°€ λ™μΌν•œ 경우 DTOλ₯Ό μƒˆλ‘œ λ§Œλ“œλŠ”κ²Œ μ’‹μ„κΉŒμš”?
Spring Framework

πŸƒ[Spring] API μŠ€νŽ™, HTTP Bodyκ°€ λ™μΌν•œ 경우 DTOλ₯Ό μƒˆλ‘œ λ§Œλ“œλŠ”κ²Œ μ’‹μ„κΉŒμš”?

  • API μŠ€νŽ™κ³Ό HTTP Bodyκ°€ μ™„μ „νžˆ λ™μΌν•˜λ”λΌλ„ DTOλ₯Ό μž¬ν™œμš©ν• μ§€ μƒˆλ‘œ λ§Œλ“€μ§€λŠ” λ‹€μŒμ„ κ³ λ €ν•˜μ—¬ κ²°μ •ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

1️⃣ μ˜λ―Έμ™€ μ±…μž„μ˜ 뢄리.

  • 두 APIκ°€ μ„œλ‘œ λ‹€λ₯Έ μ˜λ―Έμ™€ λͺ©μ μ„ κ°€μ§„λ‹€λ©΄, 예λ₯Ό λ“€μ–΄ ν•˜λ‚˜λŠ” μ‚¬μš©μž 등둝이고 λ‹€λ₯Έ ν•˜λ‚˜λŠ” μ‚¬μš©μž μ—…λ°μ΄νŠΈμΌ 경우, 같은 데이터λ₯Ό μ‚¬μš©ν•˜λ”λΌλ„ λ³„λ„μ˜ DTOλ₯Ό μƒμ„±ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.
    • μ΄λ ‡κ²Œ ν•˜λ©΄ 각 API의 λͺ©μ κ³Ό μ»¨ν…μŠ€νŠΈκ°€ λͺ…ν™•ν•΄μ§€κ³ , μ½”λ“œ 가독성이 ν–₯μƒλ©λ‹ˆλ‹€.

2️⃣ ν™•μž₯μ„±κ³Ό λ³€κ²½ κ°€λŠ₯μ„±.

  • ν•˜λ‚˜μ˜ DTOλ₯Ό μ—¬λŸ¬ APIμ—μ„œ κ³΅μœ ν•˜λ©΄, ν•œμͺ½μ˜ μš”κ΅¬μ‚¬ν•­μ΄ 변경될 λ•Œ λ‹€λ₯Έ API에 영ν–₯을 쀄 수 μžˆμŠ΅λ‹ˆλ‹€.
    • 특히 ν•˜λ‚˜μ˜ API만 변경이 ν•„μš”ν•œ μƒν™©μ—μ„œ 곡유 DTOλ₯Ό μˆ˜μ •ν•  경우 λ‹€λ₯Έ API에 μ˜λ„μΉ˜ μ•Šμ€ 영ν–₯을 쀄 수 μžˆμŠ΅λ‹ˆλ‹€.
      • 독립적인 μœ μ§€λ³΄μˆ˜κ°€ ν•„μš”ν•œ 경우 DTOλ₯Ό μƒˆλ‘œ μƒμ„±ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

3️⃣ 검증 둜직 차이.

  • DTO에 검증 둜직이 ν¬ν•¨λ˜μ–΄ μžˆλ‹€λ©΄, APIλ§ˆλ‹€ 검증 방식이 λ‹€λ₯Ό 수 μžˆμŠ΅λ‹ˆλ‹€.
    • 같은 ꡬ쑰λ₯Ό 가지더라도 검증이 λ‹€λ₯΄λ©΄ DTOλ₯Ό κ΅¬λΆ„ν•˜λŠ” 것이 μ ν•©ν•©λ‹ˆλ‹€.

4️⃣ κ°„λ‹¨ν•œ 경우 μž¬ν™œμš© κ°€λŠ₯.

  • 두 APIκ°€ 맀우 μœ μ‚¬ν•œ λͺ©μ μ„ κ°€μ§€κ³  있고, ν˜„μž¬μ™€ λ―Έλž˜μ—λ„ λ³€κ²½ κ°€λŠ₯성이 적닀고 νŒλ‹¨λœλ‹€λ©΄ DTOλ₯Ό μž¬ν™œμš©ν•˜λŠ” 것이 μ½”λ“œ 쀑볡을 μ€„μ΄λŠ” 방법이 될 수 μžˆμŠ΅λ‹ˆλ‹€.

5️⃣ 마무리.

  • λ”°λΌμ„œ API의 λͺ©μ κ³Ό 데이터 μ‚¬μš© 방식이 λͺ…ν™•ν•˜κ²Œ κ΅¬λΆ„λ˜λŠ” 경우라면 DTOλ₯Ό μƒˆλ‘œ λ§Œλ“€κ³ , κ·Έλ ‡κΈ° μ•Šμ€ 경우 μž¬ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.