2021-04-20(Tue)
νλͺ© | λ΄μ© |
νμ΅ λ μ§ | 2021-04-20(ν) |
νμ΅ μκ° | 09:00~23:00 |
νμ΅ λ²μ λ° μ£Όμ | Active model serializer, params.fetch, DTO |
νμ΅ λͺ©ν | μ΄μ λ°κ²¬ν ν€μλλ€μ ν보μ. |
λλ£ νμ΅ λ°©λ² | - |
μμΈ νμ΅ λ΄μ©
Active model serializer
https://api.rubyonrails.org/classes/ActiveModel/Serialization.html
μ μ΄μ λ μΌμ¦μμλ ActiveModel κ°μ²΄μ μ§λ ¬νλ₯Ό μ§μνλ λ©μλλ₯Ό μ§μνλ€.
λ§ map
λ±μΌλ‘ κ°μ μ μν νμμμ΄, attribute ν€λ₯Ό μ¬λ³Όλ‘ λ겨주면 JSON νμμΌλ‘ μμ°μ€λ μ§λ ¬νν μ μλ€.
params.fetch
λ©μλ
params.fetch
λ©μλhttps://api.rubyonrails.org/classes/ActionController/Parameters.html#method-i-fetch
paramaterμ λν΄νΈ κ°μ μ€μ ν΄μ£Όλ λ©μλ.
DTO λ
Όμ
https://blog.daum.net/question0921/829
DTO ν¨ν΄μ΄ λκΉ?
DTO ν¨ν΄μ μμ±κ³Ό getter/setter λ©μλλ‘ κ΅¬μ±λ μλ° ν΄λμ€ ν¨ν΄μ λ§νλ€. κ°μ²΄λ μν(state)μ νμ(behavior)λ‘ κ΅¬μ±λ¨μ΄ κΈ°λ³Έ μμΉμ΄μ§λ§ λ°μ΄ν°λ§μ κ°μ§λ λ°μ΄ν° νλμ κ°λ κ³Ό λ¨μ μ€λΈμ νΈλ‘ ꡬμ±λ λλ©μΈ λͺ¨λΈ κ°μ²΄μ΄λ€.
κ° κ³μΈ΅κ°μ λ°μ΄ν° μ λ¬μ μν μ΅μ μ μ νμΌλ‘ μΆμ²λκ³ μλ€.
DTO ν¨ν΄μ λ¬Έμ μ
λ°μ΄ν°λ₯Ό μ λ¬ν λ λ°μ΄ν°κ° μ μ€λκ³ , μ΄ λ λ°μνλ μλ¬λ₯Ό λλ²κΉ νλλ° μλΉν λ§μ μκ°μ΄ μμλ μ μλ€. λν λλ©μΈ λͺ¨λΈμ DTO λͺ¨λΈλ‘, DTO λͺ¨λΈμ λλ©μΈ λͺ¨λΈλ‘ μ λ¬νλ μΆκ°μ μΈ μμ λΉμ©μ΄ λ°μνλ€.
κ΅³μ΄ μ¬μ©ν νμκ° μλλ° λ¨μ©λλ κ²½ν₯μ΄ μλ€.
DTOμ λΉμ½ν λλ©μΈ λͺ¨λΈ(Anemic Domain Model)μ λν λ Όμ
κ°μ²΄μ μνμ νμκ° λ€μ΄κ°λ κ²μ΄ μλ, μ€λ‘μ§ μνλ§ λ€μ΄κ°λ―λ‘ κ΅¬μ‘°μ μΌλ‘ λΆν©λ¦¬ν ννμ μ½λλ₯Ό μμ°νκ² νλ€κ³ νλ€. λͺ¨λ λλ©μΈμ νμμ ν΄λΉνλ λ‘μ§μ κ°μ§κ³ μκ³ , κ·Έ λ‘μ§μ μ΄λ ν ννλ‘λ λνλ΄μΌ νλλ° κ·Έκ²μ΄ λλ©μΈμ μν μ λ³΄λ§ κ°μ§κ³ μλ λΉμ½ν λλ©μΈ λͺ¨λΈμμ λͺ¨λ λΉ μ Έλμ€μ λ€λ₯Έ ννλ‘ κ΅¬μ±λκΈ° λλ¬Έ.
λλ¬Έμ λλ©μΈ κ°μ²΄μ λ°μ΄ν°νλ(Data holder)νμ μλΉμ€ λ μ΄μ΄μ λΉλλ₯Ό μ΄λν μ μλ€.
νμ΅ λ΄μ©μ λν κ°μΈμ μΈ μ΄ν
μ΄μ λ¦κ² μλ λ°λμ 3μκ° μλ©΄ν μνμμ λΌμ΄λΈ μ½λ© νκ³ λ₯Ό μ§ννκ³ , λ©ν λ 2λΆ λ§λκ³ μΈν°λ·°λ₯Ό λ°λ‘ μ§ννλ λ± λ°μκ² λμλ€λ λλ λ무 νΌκ³€νλ€.
μ¬λ°κ²λ λ©ν λλ€ λͺ¨λ μκ²¬μ΄ λ€λ₯΄λ€. μ§κΈ μ€νΌκ° μ¨ κ³³μ μ·¨μ ν κ²μΈκ° μλλ©΄ μλ° μ€νλ§μ νμ λ μ’μ κΈ°νλ₯Ό λ Έλ €λ³΄λκ°. νν μλ μ νμ μ§μ°©ν κ²μ΄ μλλΌ, λ΄ μ νμ ννμλλ‘ λ§λ€μ΄λ²λ¦¬μ.
λ€μ νμ΅ κ³ν
Spring
Last updated