Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ dto Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ
DTO vs POCO vs Value Object
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ DTO, POCO ΠΈ Value Object
ΠΠ½Π°ΡΠ°Π»Π΅ Π½Π΅Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ΅ΠΌΠ°ΡΠΊΠ° ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρ Value Object. Π C# ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΠΎΡ ΠΎΠΆΠ°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠ°Ρ Value Type. ΠΡΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ Π΄Π΅ΡΠ°Π»Ρ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ Ρ ΡΠ°Π½ΡΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ ΠΊΠ°ΡΠ°ΡΡΡΡ ΡΡΠΎΠ³ΠΎ. Value Object, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠΎΠΉΠ΄Π΅Ρ ΡΠ΅ΡΡ, β ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΠΈΠ· ΡΡΠ΅Π΄Ρ DDD (Domain-Driven Design).
ΠΠΊ, Π΄Π°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½Π΅ΠΌ. ΠΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ ΡΠ°ΠΊΠΈΠ΅ ΠΏΠΎΠ½ΡΡΠΈΡ ΠΊΠ°ΠΊ DTO, Value Object ΠΈ POCO ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΊΠ°ΠΊ ΡΠΈΠ½ΠΎΠ½ΠΈΠΌΡ. ΠΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»ΠΈ ΠΎΠ½ΠΈ ΠΎΠ·Π½Π°ΡΠ°ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅?
DTO β ΡΡΠΎ ΠΊΠ»Π°ΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π΄Π°Π½Π½ΡΠ΅ Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π»ΠΎΠ³ΠΈΠΊΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π½ΠΈΠΌΠΈ. DTO ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ, Π»ΠΈΠ±ΠΎ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ»ΠΎΡΠΌΠΈ Π²Π½ΡΡΡΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΊ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΡΠ΅Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ β ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ.
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Value Object β ΡΡΠΎ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠΉ ΡΠ»Π΅Π½ Π²Π°ΡΠ΅ΠΉ Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ. ΠΠ½ ΠΏΠΎΠ΄ΡΠΈΠ½ΡΠ΅ΡΡΡ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ, ΡΡΠΎ ΠΈ ΡΡΡΠ½ΠΎΡΡΠΈ (Entities). ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Value Object ΠΈ Entity Π² ΡΠΎΠΌ, ΡΡΠΎ Ρ Value Object-Π° Π½Π΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡΠΈ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΄Π²Π° Value Object-Π° Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ ΠΌΠΎΠ³ΡΡ ΡΡΠΈΡΠ°ΡΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΡΠΌΠΈ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π΄Π²Π΅ ΡΡΡΠ½ΠΎΡΡΠΈ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π° Π΄Π°ΠΆΠ΅ Π² ΡΠ»ΡΡΠ°Π΅ Π΅ΡΠ»ΠΈ ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ.
Value Object-Ρ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΠΈ ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ.
POJO Π±ΡΠ» ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΠΠ°ΡΡΠΈΠ½ΠΎΠΌ Π€Π°ΡΠ»Π΅ΡΠΎΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ Π΄Π»Ρ JavaBeans ΠΈ Π΄ΡΡΠ³ΠΈΡ Β«ΡΡΠΆΠ΅Π»ΡΡ Β» enterprise-ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Ρ Π² ΡΠ°Π½Π½ΠΈΡ 2000-Ρ .
ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ΅Π»ΡΡ POJO Π±ΡΠ»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Π΄ΠΎΠΌΠ΅Π½ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ JavaBeans. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, JavaBeans Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ.
ΠΡΡΠ³ΠΎΠΉ Ρ ΠΎΡΠΎΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π°Π½ΡΠΈ-POCO ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° β Entity Framework Π΄ΠΎ Π²Π΅ΡΡΠΈΠΈ 4.0. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ»Π°ΡΡ, ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ EF, Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π» ΠΎΡ EntityObject, ΡΡΠΎ ΠΏΡΠΈΠ²Π½ΠΎΡΠΈΠ»ΠΎ Π² Π΄ΠΎΠΌΠ΅Π½ Π»ΠΎΠ³ΠΈΠΊΡ, ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ Π΄Π»Ρ EF. ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 4, Entity Framework Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ POCO ΠΌΠΎΠ΄Π΅Π»ΡΡ β Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π½Π°ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΎΡ EntityObject.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΠΎΠ½ΡΡΠΈΠ΅ POCO ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ. ΠΡΠΎ ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² YAGNI, KISS ΠΈ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ best practices. POCO ΠΊΠ»Π°ΡΡΡ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ.
ΠΠΎΡΡΠ΅Π»ΡΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ½ΡΡΠΈΡΠΌΠΈ
ΠΡΡΡ Π»ΠΈ ΡΠ²ΡΠ·ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΠΌΠΈ ΡΡΠ΅ΠΌΡ ΠΏΠΎΠ½ΡΡΠΈΡΠΌΠΈ? Π ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, DTO ΠΈ Value Object ΠΎΡΡΠ°ΠΆΠ°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎ. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, POCO β ΡΡΠΎ Π½Π°Π΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄Π»Ρ DTO ΠΈ Value Object:
ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Value Object ΠΈ DTO Π½Π΅ Π½Π°ΡΠ»Π΅Π΄ΡΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΠΌ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ ΠΈ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠ²Π»ΡΡΡΡΡ POCO. Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ, POCO β ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ½ΡΡΠΈΠ΅: ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Value Object, Entity, DTO ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠ»Π°ΡΡ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ, Π½Π΅ ΠΎΡΠ½ΠΎΡΡΡΠΈΠΌΡΡ Π½Π°ΠΏΡΡΠΌΡΡ ΠΊ ΡΠ΅ΡΠ°Π΅ΠΌΠΎΠΉ Π²Π°ΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅.
ΠΠΎΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ :
ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ POCO-ΠΊΠ»Π°ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈ ΠΈΠΌΠ΅ΡΡ, ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡΠΈ, Ρ.ΠΊ. ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠ°ΠΊ Value Object, ΡΠ°ΠΊ ΠΈ Entity. Π’Π°ΠΊΠΆΠ΅, POCO ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ, Π° ΠΌΠΎΠΆΠ΅Ρ ΠΈ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ Π²Π½ΡΡΡΠΈ ΡΠ΅Π±Ρ. ΠΡΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ POCO DTO.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π² ΡΡΠ°ΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
DTO Π² JS
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ , Π° DTO (Data Transfer Object) ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π°ΠΆΠ½ΡΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΎΠΌ Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅. Π βΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΌβ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ DTO ΡΠ²Π»ΡΡΡΡΡ ΠΏΡΠΎΡΡΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ (Π±Π΅Π· Π»ΠΎΠ³ΠΈΠΊΠΈ), ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΌΠΈ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ , ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ βΠΏΠΎ ΠΏΡΠΎΠ²ΠΎΠ΄Π°ΠΌβ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π½Π΅ΡΠ΅Π½Π½ΡΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ (remote processes). ΠΠ°ΡΠ°ΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅ «ΠΏΠΎ ΠΏΡΠΎΠ²ΠΎΠ΄Π°ΠΌ» ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ JSON.
ΠΡΠ»ΠΈ DTO ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ»ΠΎΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ , Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠ°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ), ΡΠΎ, ΠΏΠΎ Π€Π°ΡΠ»Π΅ΡΡ, ΡΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ LocalDTO. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ (Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π€Π°ΡΠ»Π΅ΡΠ°) Π½Π΅Π³Π°ΡΠΈΠ²Π½ΠΎ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌ DTO. ΠΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΌ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠΌ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ DTO ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³Π° Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ Π² Π΄ΡΡΠ³ΡΡ ΠΏΡΠΈ ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ ΠΎΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊ Π΄ΡΡΠ³ΠΎΠΌΡ.
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, DTO ΡΠ²Π»ΡΡΡΡΡ Π²Π°ΠΆΠ½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΠΈ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΠΏΠΎΠΊΠ°ΠΆΡ JS-ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΠΈΡΠ°Ρ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ Π΄Π»Ρ DTO (Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠ² ECMAScript 2015+).
Π‘ΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π² ΠΊΠΎΠ΄Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΎΡΡΠ°ΠΆΠ΅Π½Π° ΡΠ°ΠΌΠ° ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ . ΠΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠΎΠ² (Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ JSDoc ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² ΡΠΈΠΏΠ°Ρ Π΄Π°Π½Π½ΡΡ ):
ΠΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ , Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π°ΡΡΠΈΠ±ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠΌ. ΠΡΠ»ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ ΡΠ°ΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ, ΡΠΎ ΠΊΠ»Π°ΡΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° DTO Π² ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΡΠ²ΡΠ·Π°Π½ΠΎ ΡΠ°Π·Π±ΠΎΡΠΎΠΌ ΠΈΠΌΠ΅ΡΡΠ΅ΠΉΡΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ , ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ «ΠΏΠΎ ΠΏΡΠΎΠ²ΠΎΠ΄Π°ΠΌ» Ρ «Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ». ΠΠΎΡΡΠΎΠΌΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ DTO ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π½Π° Π²Ρ ΠΎΠ΄ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ JS-ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΈΠ·Π²Π»Π΅ΡΡ Π·Π½Π°ΠΊΠΎΠΌΡΠ΅ Π΅ΠΌΡ Π΄Π°Π½Π½ΡΠ΅:
Π ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ ΡΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ Π΄Π»Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ²:
ΠΡΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π°ΡΡΠΈΠ±ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ· ΡΠ΅Π±Ρ ΠΌΠ°ΡΡΠΈΠ², ΡΠΎ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ Π΅Π³ΠΎ ΡΠ°Π·Π±ΠΎΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
ΠΡΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π΄Π°Π½Π½ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½Ρ Π² Π°ΡΡΠΈΠ±ΡΡΠ΅ Π±Π΅Π· ΡΠ°Π·Π±ΠΎΡΠ°, ΡΠΎ ΡΡΠΎ ΡΠΎΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ (Ρ ΠΎΡΡ ΠΊ DTO ΠΈΠΌΠ΅Π΅Ρ ΡΠ°ΠΊΠΎΠ΅ ΡΠ΅Π±Π΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅):
ΠΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ Π²ΡΠ±ΠΎΡΠΊΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΠΠ:
Π Π΅Π·ΡΠΌΠ΅
ΠΡΠ»ΠΈ ΡΠ²ΠΎΠ΄ΠΈΡΡ Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ Π²ΡΠ΅ ΡΡΠΈ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΡ DTO (ΡΡΡΡΠΊΡΡΡΠ°, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅), ΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊΠΎΠΉ es-ΠΌΠΎΠ΄ΡΠ»Ρ:
ΠΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ Π·Π½Π°ΠΊΠΎΠΌΡΠ΅ ΠΏΠΎΠ΄ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ· Π±ΠΎΠ»ΡΡΠΈΡ ΡΡΡΡΠΊΡΡΡ (ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΎΡΠ²Π΅ΡΠΎΠ² ΠΎΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈ Ρ.ΠΏ.), Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΎΡΠ½ΠΎΡΡΡΠΈΠ΅ΡΡ ΠΊ ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡ, Π° IDE, Π·Π° ΡΡΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ, ΠΈΠΌΠ΅Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² ΡΡΠΎΠΉ ΠΏΠΎΠ΄ΡΡΡΡΠΊΡΡΡΠ΅.
ΠΠΎΡΠ»Π΅ΡΠ»ΠΎΠ²ΠΈΠ΅
Π§ΡΠΎ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ»ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π΄Π²ΡΡ ΡΡΡΠΏΠ΅Π½ΡΠ°ΡΠΎΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°:
ΠΠΎ-Π²ΡΠΎΡΡΡ , Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²Π΅ΡΠ°ΡΡΡΡ Π½Π° ΠΏΡΠΎΡΠΎΡΠΈΠΏ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ°:
ΠΡΠΎ ΠΎΠΏΡΡΡ-ΡΠ°ΠΊΠΈ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΎ Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΈ ΠΌΠ°ΡΡΠΎΠ²ΠΎΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ².
Π ΡΡΠ΅ΡΡΠΈΡ , ΠΎΡΡΡΡΡΡΠ²ΡΡΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² DTO Π°ΡΡΠΈΠ±ΡΡΠ°Ρ :
ΠΠ°Π²Π΅ΡΠ½ΠΎΠ΅, Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΠ² ΡΡΠΎΠ³ΠΎ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° ΠΊΠΎΠ΄Π° ΡΠ°ΠΊΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎΠΊΠ°Π·Π°Π»Π°ΡΡ ΠΈΠΌ ΠΈΠ·Π»ΠΈΡΠ½Π΅ΠΉ ΠΈ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π΅Ρ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ.
Π ΠΎΠ±ΡΠ΅ΠΌ, Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, Π²ΠΏΠΎΠ»Π½Π΅ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎΠ΅ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π² ΠΌΠΎΠ΅ΠΉ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ (ΡΡΡΡΠΊΡΡΡΠ°, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅) Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠΉ (ΡΡΡΡΠΊΡΡΡΠ°, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ). Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΡΠΎ Safary ΡΠΎΠ»ΡΠΊΠΎ 26-Π³ΠΎ Π°ΠΏΡΠ΅Π»Ρ ΡΡΠΎΠ³ΠΎ Π³ΠΎΠ΄Π° Π½Π°ΡΡΠΈΠ»Π°ΡΡ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΡΡΠ°ΡΠΈΠΊΡ (Ρ ΠΎΡΡ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΡΡΠ΅ΠΊΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ Π·Π° ΡΡΡΡ ΠΏΡΡΠΌΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π² ΠΊΠ»Π°ΡΡ: ConfigEmail.initialize = function(obj)<> ).
ΠΠΎΠ»Π»Π΅Π³Π° @nin-jin Π² ΡΠ²ΠΎΡΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΡΠΏΡΠ°Π²Π΅Π΄Π»ΠΈΠ²ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΠ», ΡΡΠΎ Ρ ΠΎΡΠΎΡΠΎ Π±Ρ «ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΠΈΠΏΡ ΠΏΠΎΠ»Π΅ΠΉ ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ«. Π― ΠΌΠΎΠ³Ρ ΡΠΎΠ³Π»Π°ΡΠΈΡΡΡΡ, ΡΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ ΠΊ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΌ (Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅). ΠΡΡΠ°ΡΠΈ, ΡΠ°ΠΊ ΠΈ Π΄Π΅Π»Π°Π΅ΡΡΡ Π² OpenAPI-Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ΅:
ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠΎΠ½ΡΠ», ΡΡΠ½ΠΊΡΠΈΡ Rec ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΡΡΡΡ Π΄Π°ΡΠ°-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (ΠΎΠ±ΡΠ΅ΠΊΡΡ Π±Π΅Π· Π»ΠΎΠ³ΠΈΠΊΠΈ, ΡΠΎΠ»ΡΠΊΠΎ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ) «Π½Π° Π»Π΅ΡΡ». Π ΠΎΠ±ΡΠ΅ΠΌ-ΡΠΎ ΡΡΠΎ ΠΈ Π΅ΡΡΡ DTO, ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΆΠΈΠΌΠ° runtime, Π° Π½Π΅ ΡΡΠΎΠ²Π½Ρ ΠΊΠΎΠ΄Π° (ΡΠ΅ ΠΆΠ΅ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ Π² ΠΌΠΎΡΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ «ΠΌΠ΅ΡΠΈΡΡ» ΠΌΠ΅ΡΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠΎΡΠ². DTO ΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡ ΠΈΡ Π±Π΅Π· Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ).
ΠΡΠΎΡ Π°Π±Π·Π°Ρ Ρ Π²ΡΡΠ°Π²ΠΈΠ» Π² Π½Π°ΡΠ°Π»ΠΎ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠΈ ΠΎΠ½ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΡ Π² ΠΊΠΎΠ½Π΅Ρ ΡΠ΅ΠΊΡΡΠ°, Π° Π²ΡΠΎΡΠΎΠΉ Π°Π±Π·Π°Ρ ΡΡΠ°Π» ΠΏΠ΅ΡΠ²ΡΠΌ. ΠΠΎΡ ΡΠ°ΠΊΠ°Ρ Π·Π°Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½Π°Ρ Π±Π°Π³Π° Π΅ΡΡΡ ΡΠ΅Π³ΠΎΠ΄Π½Ρ Π½Π° Π₯Π°Π±ΡΠ΅.
ΠΠ΅ ΡΠ°ΠΌΡΠ΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠ΅ ΡΠΎΠ²Π΅ΡΡ ΠΏΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ DTO Π½Π° Java
Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π°ΡΠ°ΡΡΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ Ρ Π°ΡΠ°ΠΊΡΠ΅Ρ. ΠΠ»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΊΠΎΠ΄Π° β ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΡΠ°ΡΠ°ΡΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ ΠΏΡΠΎΡΡΡΠΌ.
Π§ΡΠΎΠ±Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈΠ· Π²Π½Π΅ΡΠ½Π΅ΠΉ ΡΠ»ΡΠΆΠ±Ρ, ΠΌΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ JSON Π² ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ (Data Transfer Object, DTO). ΠΠΎΠ΄, ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΠΈΠΉ DTO, Π±ΡΡΡΡΠΎ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅ΡΡΡ, Π½ΠΎ Ρ ΡΡΠΈΠΌ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΌΠΎΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ²Π΅ΡΠΎΠ². ΠΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ DTO, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π»Π΅Π³ΡΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΈ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±Π»Π΅Π³ΡΠ°ΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈ ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΠΈΡ Π²ΠΌΠ΅ΡΡΠ΅ β ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΡΠΎΡΡΠΈΡΡ ΡΠ΅Π±Π΅ ΡΠ°Π±ΠΎΡΡ.
Π‘Π΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ DTO βΠΏΠΎ ΡΡΠ΅Π±Π½ΠΈΠΊΡβ
ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΡΠΈΠΏΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° ΡΠ°Π±ΠΎΡΡ Ρ JSON. ΠΠΎΡ ΡΡΡΡΠΊΡΡΡΠ° JSON. ΠΡΠΎΡ JSON ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΈΡΡΡ βΠ Π΅Π΄ΠΆΠΈΠ½Π°β.
PizzaDto β Β«ΡΡΠ°ΡΡΠΉ Π΄ΠΎΠ±ΡΡΠΉ Java-ΠΎΠ±ΡΠ΅ΠΊΡΒ», POJO: ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ, Π³Π΅ΡΡΠ΅ΡΠ°ΠΌΠΈ, ΡΠ΅ΡΡΠ΅ΡΠ°ΠΌΠΈ ΠΈ Π²ΡΠ΅ΠΌ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌ. ΠΠ½ ΠΎΡΡΠ°ΠΆΠ°Π΅Ρ ΡΡΡΡΠΊΡΡΡΡ JSON, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΈ JSON Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠΎΠ³ΠΎ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ Jackson:
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΈ ΠΏΡΡΠΌΠΎΠ»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅. Π ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠΎΠ³Π΄Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°?
Π ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ DTO Π±ΡΠ²Π°ΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ. ΠΠΎΠ΄ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ DTO ΠΌΠΎΠΆΠ΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π²ΠΏΠ»ΠΎΡΡ Π΄ΠΎ Π΄Π΅ΡΡΡΠΊΠΎΠ² ΡΡΡΠΎΠΊ. ΠΠ½ΠΎΠ³Π΄Π° Π±ΠΎΠ»ΡΡΠ΅. ΠΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΊΠΎΠ΄ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»Π΅Π½ ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌ.
ΠΠΎΡ ΠΏΠ΅ΡΠ²Π°Ρ ΠΏΠΎΠΏΡΡΠΊΠ° ΡΠΏΡΠΎΡΡΠΈΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ DTO β Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌ DTO: ΡΠ°ΠΊΠΈΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅Π»ΡΠ·Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ.
Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΡΡΠ°Π½Π½ΡΠΌ, Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ ΡΡΠΎΠΉ ΠΈΠ΄Π΅Π΅ΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΠΌΡΡ Π½Π° Π½Π΅ΠΉ ΠΏΠΎΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ DTO
ΠΡΠ»ΠΈ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΏΡΠΎΡΡΠΎ, ΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ, Π΅ΡΠ»ΠΈ Π΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠ±ΠΎΡΠΊΠΈ.
Π£ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π΅Ρ ΡΠ΅ΡΡΠ΅ΡΠ°. ΠΡΠ΅ Π΅Π³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π° β ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ.
ΠΡΠΎ Π²Π°ΠΆΠ½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΠΈΡΡΠ° βΠ Π΅Π΄ΠΆΠΈΠ½Π°β Π±Π΅Π· Π³ΡΠΈΠ±ΠΎΠ² β ΡΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π½Π΅ ΠΏΠΈΡΡΠ° βΠ Π΅Π΄ΠΆΠΈΠ½Π°β.
ΠΡΠ»ΠΈ ΡΠ΅ΡΡΠ΅Π·Π½Π΅Π΅, ΡΠΎ ΠΠΆΠΎΡΡΠ° ΠΠ»ΠΎΡ , Π°Π²ΡΠΎΡ ΠΊΠ½ΠΈΠ³ΠΈ βJava: ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅β, Π΄Π°Π΅Ρ ΡΠ°ΠΊΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ ΠΊΠ»Π°ΡΡΠΎΠ²:
βΠΡΠ»ΠΈ Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ΅ Π΅ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΊΠ»Π°ΡΡΠ° Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡβ. β ΠΠΆΠΎΡΡΠ° ΠΠ»ΠΎΡ
ΠΡΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π²Π°ΡΠ΅Π³ΠΎ DTO ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌ, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π·Π°ΡΠΈΡΠ½ΡΠ΅ ΠΊΠΎΠΏΠΈΠΈ. Π‘ ΠΈΡ ΠΏΠΎΠΌΠΎΡΡΡ Π²Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ DTO ΠΈΠ·Π²Π½Π΅.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π½Π°ΡΠΈΠ½Π°Ρ Ρ Java 16, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ ΠΊΡΠ°ΡΠΊΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΡΠ΅ΡΠ΅Π· Π·Π°ΠΏΠΈΡΠΈ.
Π₯ΠΎΡΠΎΡΠΎ. Π’Π΅ΠΏΠ΅ΡΡ Ρ Π½Π°Ρ Π΅ΡΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ DTO. ΠΠΎ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΊΠΎΠ΄?
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡΠΈ
ΠΠ΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡΡ ΠΏΡΠΈΠ½ΠΎΡΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ², Π½ΠΎ Π²ΠΎΡ ΠΌΠΎΠ΅ Π»ΡΠ±ΠΈΠΌΠΎΠ΅: Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ±ΠΎΡΠ½ΡΡ ΡΡΡΠ΅ΠΊΡΠΎΠ².
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅. Π ΡΡΠΎΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠ΄Π° Π΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ°:
ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΈΡΡΠ° Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ. ΠΠ°ΠΊΠ°Ρ ΡΡΡΠΎΠΊΠ° Π²ΡΠ·Π²Π°Π»Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ?
ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π΄Π²Π° ΠΎΡΠ²Π΅ΡΠ°: ΡΠ½Π°ΡΠ°Π»Π° Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π° Π·Π°ΡΠ΅ΠΌ Ρ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΉ.
Π‘ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΡΠΎΡΠ΅. ΠΠΎ ΡΡΠΎ Π΅ΡΠ΅ Π½Π΅ Π²ΡΠ΅.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ pizza β Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, verify() Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ Π΅Π³ΠΎ. ΠΡΠΈΠ΄Π΅ΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΡ ΠΏΠΈΡΡΡ, Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ ΠΊΠΎΠ΄ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°ΡΡ:
Π ΡΡΠΎΠΉ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ verify() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠ²ΡΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΡ ΠΏΠΈΡΡΡ. ΠΠ΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡΡ Π΄Π΅Π»Π°Π΅Ρ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ. ΠΠ³ΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π»Π΅Π³ΡΠ΅ ΡΠΈΡΠ°ΡΡ ΠΈ Π»Π΅Π³ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡ.
ΠΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Π ΡΠ²ΠΎΠ΅ΠΉ ΠΊΠ½ΠΈΠ³Π΅ ΠΠΆΠΎΡΡΠ° ΠΠ»ΠΎΡ ΠΏΡΠΎΡΡΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅Ρ βΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠΈΠ²ΠΎΡΡΡβ.
βΠΠ΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΏΡΠΎΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΡΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΠΊΠ»Π°ΡΡΡ. ΠΠ½ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ ΠΈ Π±ΠΎΠ»Π΅Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Ρβ. β ΠΠΆΠΎΡΡΠ° ΠΠ»ΠΎΡ
Π’Π΅ΠΏΠ΅ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ: ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈ ΠΌΡ ΠΏΠΎΡΡΡΠΏΠ°ΡΡ ΡΠ°ΠΊ ΠΆΠ΅ Ρ DTO?
ΠΠ΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ DTOβ¦ Π ΡΡΠΎ ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΎ?
Π¦Π΅Π»Ρ DTO β ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° Π΄Π°Π½Π½ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ. ΠΠ±ΡΠ΅ΠΊΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ, Π° Π·Π°ΡΠ΅ΠΌ Π΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡΡΡΡ. ΠΠΈΠ±ΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² JSON, Π»ΠΈΠ±ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ. ΠΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΡΡΡ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΉ. ΠΠ΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ DTO Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ Ρ Π³Π°ΡΠ°Π½ΡΠΈΠ΅ΠΉ.
ΠΠ°ΠΊ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ, ΡΡΠΎ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΈΡΡΠΈΠ½Π΅.
ΠΠ΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ DTO Ρ Jackson
Jackson β ΡΠ°ΠΌΠ°Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½Π°Ρ JSON-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ Java.
ΠΠΎΠ³Π΄Π° Ρ DTO Π΅ΡΡΡ Π³Π΅ΡΡΠ΅ΡΡ ΠΈ ΡΠ΅ΡΡΠ΅ΡΡ, Jackson ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ JSON Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ. ΠΠΎ Ρ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ Jackson Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΠΎΠΌΠΎΡΠΈ. ΠΠΌΡ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ, ΠΊΠ°ΠΊ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ.
ΠΠΎΡ ΠΈ Π²ΡΠ΅. Π’Π΅ΠΏΠ΅ΡΡ Π½Π°Ρ Π΅ΡΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ DTO, ΠΊΠΎΡΠΎΡΡΠΉ Jackson ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π² JSON ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΠΎΠ±ΡΠ΅ΠΊΡ.
ΠΠ΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ DTO Ρ Gson ΠΈ Moshi
ΠΡΡΡ Π΄Π²Π΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ Jackson: Gson ΠΈ Moshi.
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π΅ΡΠ΅ ΠΏΡΠΎΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ JSON Π² Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ DTO, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΈΠΌ Π½Π΅ Π½ΡΠΆΠ½Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ.
ΠΠΎ ΠΏΠΎΡΠ΅ΠΌΡ Jackson Π²ΠΎΠΎΠ±ΡΠ΅ ΡΡΠ΅Π±ΡΠ΅Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Gson ΠΈ Moshi?
ΠΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ°Π³ΠΈΠΈ. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ, ΠΊΠΎΠ³Π΄Π° Gson ΠΈ Moshi Π³Π΅Π½Π΅ΡΠΈΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠ· JSON, ΠΎΠ½ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡ Π΅Π³ΠΎ ΠΏΡΡΠ΅ΠΌ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠ½ΠΈ Π½Π΅ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ.
Π― Π½Π΅ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΠΎΠΊΠ»ΠΎΠ½Π½ΠΈΠΊ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°. ΠΠ½ Π²Π²ΠΎΠ΄ΠΈΡ Π² Π·Π°Π±Π»ΡΠΆΠ΄Π΅Π½ΠΈΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ Π²Π»ΠΎΠΆΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π»ΠΎΠ³ΠΈΠΊΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠ·Π½Π°ΡΡ, ΡΡΠΎ ΠΎΠ½ Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ. ΠΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΡΡΠΈΠΌ, Jackson ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ.
ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ Π½ΡΠ»Π΅Π²ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
Π£ Jackson Π΅ΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ. ΠΡΠ»ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π»ΠΎΠ³ΠΈΠΊΡ, ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π²ΡΠ΅Π³Π΄Π°, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΠΎΠ·Π΄Π°Π½ Π»ΠΈ DTO ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ ΠΈΠ· JSON.
ΠΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠΈΠΌ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎΠΌ Π΄Π»Ρ ΠΈΠ·Π±Π΅Π³Π°Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ null ΠΈ ΡΠ»ΡΡΡΠΈΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ»Π΅ΠΉ Ρ Π½Π΅Π½ΡΠ»Π΅Π²ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ.
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ ΠΏΡΡΡΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΠ°Π²Π½Ρ Π½ΡΠ»Ρ.
Π’Π°ΠΊ Π²Ρ Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΌΠ΅Π½ΡΡΠ΅ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠΎΠ²ΡΡΠΈΡΠ΅ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ. Π§ΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΡΡΡΠ΅?
Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΏΠΎ ΡΡΠ΅ΡΡ, Π½ΠΎ Π½Π΅ ΠΏΠΎ Π²Π°ΠΆΠ½ΠΎΡΡΠΈ: ΡΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ DTO ΡΠΎ ΡΡΡΠΎΠΈΡΠ΅Π»ΡΠΌΠΈ
ΠΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠΎΠ²Π΅Ρ, ΠΊΠ°ΠΊ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ DTO. Π ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ΅ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ DTO Ρ ΡΠΎΠ·Π΄Π°Ρ Builder. ΠΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠΉ API Π΄Π»Ρ ΠΎΠ±Π»Π΅Π³ΡΠ΅Π½ΠΈΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ DTO.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ PizzaDto ΡΠ΅ΡΠ΅Π· ΡΠ±ΠΎΡΡΠΈΠΊ:
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»ΠΎΠΆΠ½ΡΡ DTO ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ. ΠΡΠΎΡ ΡΠ°Π±Π»ΠΎΠ½ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ΅Π½, ΡΡΠΎ ΠΠΆΠΎΡΡΠ° ΠΠ»ΠΎΡ ΠΏΠΎΡΡΠΈ Π½Π°ΡΠΈΠ½Π°Π΅Ρ Ρ Π½Π΅Π³ΠΎ ΡΠ²ΠΎΡ ΠΊΠ½ΠΈΠ³Ρ βJava: ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅β.
βΠ’Π°ΠΊΠΎΠΉ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ ΠΊΠΎΠ΄ Π»Π΅Π³ΠΊΠΎ ΠΏΠΈΡΠ°ΡΡ ΠΈ, ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ, ΡΠΈΡΠ°ΡΡβ. β ΠΠΆΠΎΡΡΠ° ΠΠ»ΠΎΡ
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ PizzaDto :
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Lombok Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ² Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΡΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ DTO.
Π― ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ»Π°Π³ΠΈΠ½Π° Builder generator IntelliJ. ΠΠ°ΡΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΊΠ°ΠΊ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠ΄Π°. ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΌ, Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ ΠΊΠΎΠ΄ β Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΡΠΌ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠΎΠ²Π΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Π΄Π΅ΡΠΆΡ Π² Π³ΠΎΠ»ΠΎΠ²Π΅ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ DTO. Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΠ΅ Π²ΠΌΠ΅ΡΡΠ΅, ΠΎΠ½ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»ΡΡΡΠ°Ρ Π²Π°Ρ ΠΊΠΎΠ΄. ΠΠΎΠ΄ΠΎΠ²Π°Ρ Π±Π°Π·Π° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π»Π΅Π³ΡΠ΅ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ, ΠΏΡΠΎΡΠ΅ Π² ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠΈ ΠΈ, Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΡΡΠ΅ΡΠ΅, ΡΠ°ΠΊ ΠΏΡΠΎΡΠ΅ Π΄Π΅Π»ΠΈΡΡΡΡ Π΅Ρ Ρ Π²Π°ΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ.
ΠΠ΅ΡΠ΅ΠΎΡΠΌΡΡΠ»Π΅Π½ΠΈΠ΅ DTO Π² Java
ΠΡΠΈΠ²Π΅Ρ, Π₯Π°Π±Ρ! ΠΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡ Π²Π°ΡΠ΅ΠΌΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ Π»ΡΠ±ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΠ°ΡΡΠΈ βRethinking the Java DTOβ Π‘ΡΠΈΠ²Π΅Π½Π° Π£ΠΎΡΠ΅ΡΠΌΠ°Π½Π°, Π³Π΄Π΅ Π°Π²ΡΠΎΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΠΈ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ DTO Π² Java.
Π― ΠΏΡΠΎΠ²Π΅Π» 12 Π½Π΅Π΄Π΅Π»Ρ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ Π²ΡΠΏΡΡΠΊΠ½ΠΈΠΊΠΎΠ² Scott Logic, ΡΠ°Π±ΠΎΡΠ°Ρ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π²ΡΠΏΡΡΠΊΠ½ΠΈΠΊΠ°ΠΌΠΈ Π½Π°Π΄ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ. Π Π±ΡΠ» ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΡΡΠΎΠΏΠΎΡΠΈΠ» ΠΌΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠ΅ Π΄ΡΡΠ³ΠΈΡ : ΡΡΡΡΠΊΡΡΡΠ° ΠΈ ΡΡΠΈΠ»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π½Π°ΡΠΈΡ DTO. ΠΡΠΎ Π²ΡΠ·ΡΠ²Π°Π»ΠΎ ΠΌΠ°ΡΡΡ ΡΠΏΠΎΡΠΎΠ² ΠΈ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠΉ Π½Π° ΠΏΡΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π½ΠΎ Π² ΠΈΡΠΎΠ³Π΅ Ρ ΠΏΠΎΠ½ΡΠ», ΡΡΠΎ ΠΌΠ½Π΅ Π½ΡΠ°Π²ΠΈΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ DTO.
ΠΠ°Π½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎ Π²Π΅ΡΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ, Π½ΠΎ ΠΎΠ½ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΠΈ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ IDE. ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠΎΠΊ ΠΏΡΠΎΠΉΠ΄Π΅Ρ ΠΈ Π²Π°ΠΌ ΠΎΠ½ ΡΠΎΠΆΠ΅ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΡΡΡ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ DTO (Data Transfer Object)?
ΠΠ°ΡΠ°ΡΡΡΡ, Π² ΠΊΠ»ΠΈΠ΅Π½Ρ-ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ , Π΄Π°Π½Π½ΡΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅ (ΡΠ»ΠΎΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ) ΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ (ΡΠ»ΠΎΠΉ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ) ΡΡΡΡΠΊΡΡΡΠΈΡΡΡΡΡΡ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ. ΠΠ° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΡΠΎ Π΄Π°Π΅Ρ Π½Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΊΠΎΠΌΡΠΎΡΡΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π² ΡΠ³ΠΎΠ΄Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π² ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ βuser-friendlyβ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΡΡ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅, ΠΈ, Π΄Π»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ, Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΡΠΏΠΎΡΠΎΠ± ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ° Π² Π΄ΡΡΠ³ΠΎΠΉ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½ΠΎ ΠΌΡ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠΌΡΡ Π½Π° ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ. DTO-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π»ΡΠ±ΡΠΌΠΈ Π΄Π²ΡΠΌΡ ΡΠ»ΠΎΡΠΌΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ .
DTO β ΡΡΠΎ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ value-object Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΡΠ°Π½ΠΈΡ Π΄Π°Π½Π½ΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² ΡΠ»ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ. ΠΡ ΡΠ°Π·Π΄Π΅Π»ΠΈΠΌ DTO Π½Π° ΡΠ΅, ΡΡΠΎ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΡΠΈ Π·Π°ΠΏΡΠΎΡΠ΅ (Request) ΠΈ Π½Π° ΡΠ΅, ΡΡΠΎ ΠΌΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠ²Π΅ΡΠ° ΡΠ΅ΡΠ²Π΅ΡΠ° (Response). Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΎΠ½ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΡΡΡΡΡ ΠΈ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΡΡΡΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ Spring.
ΠΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ, ΡΡΠΎ Ρ Π½Π°Ρ Π΅ΡΡΡ endpoint ΠΈ DTO Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠ° ΠΈ ΠΎΡΠ²Π΅ΡΠ°:
Π§ΡΠΎ Π΄Π΅Π»Π°ΡΡ Ρ ΠΎΡΠΎΡΠΈΠ΅ DTO?
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ Π²Ρ Π½Π΅ ΠΎΠ±ΡΠ·Π°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ DTO. ΠΡΠΎ ΠΏΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠ°ΡΡΠ΅ΡΠ½ ΠΈ Π²Π°Ρ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΈ Π±Π΅Π· Π½Π΅Π³ΠΎ.
ΠΠ½ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»ΠΎΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π² ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎ ΡΠΈΡΠ°Π΅ΠΌΠΎΠΌ Π²ΠΈΠ΄Π΅. ΠΠ½Π΅ Π½ΡΠ°Π²ΠΈΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ DTO ΠΈ, Ρ Π΄ΡΠΌΠ°Ρ, Π²Ρ ΡΠΎΠΆΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, Π²Π΅Π΄Ρ ΡΡΠΎ ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅ ΡΠΏΠΎΡΠΎΠ±ΡΡΠ²ΡΠ΅Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ Π·Π°ΡΠ΅ΠΏΠ»Π΅Π½ΠΈΡ (decoupling) ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ»ΠΎΠ΅ΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΡΠΌ ΡΠ»ΠΎΠ΅ΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΌ ΠΈ ΡΠΌΠ΅Π½ΡΡΠ°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π΅Π³ΠΎ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π½Π΅ Π²ΡΠ΅ DTO ΡΠ²Π»ΡΡΡΡΡ Ρ ΠΎΡΠΎΡΠΈΠΌΠΈ. Π₯ΠΎΡΠΎΡΠΈΠ΅ DTO ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ API ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ Π»ΡΡΡΠΈΠΌ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°ΠΌ ΠΈ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°ΠΌ ΡΠΈΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΏΠΈΡΠ°ΡΡ API, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΠΎ. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΎΡΠ΅ΠΊ (endpoint) Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΈ ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ Ρ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π½Π° Π²ΡΠ΅Ρ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΡΠΎΡΠΊΠ°Ρ . Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°, Π²ΠΎΠ·ΡΠΌΡΠΌ Π²ΡΡΠ΅ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π°. ΠΡΠ»ΠΈ ΠΏΠΎΠ»Π΅ price ΠΏΡΠΈ Π·Π°ΠΏΡΠΎΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΊΠ°ΠΊ βΡΠ΅Π½Π° Ρ ΠΠΠ‘β, ΡΠΎ ΠΈ Π² ΠΎΡΠ²Π΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ price Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡΡ. Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ API ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΈΠ·-Π·Π° ΡΠ°Π·Π»ΠΈΡΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΌΠΈ ΡΠΎΡΠΊΠ°ΠΌΠΈ, ΠΈ Π² ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΠΎΠ±Π»Π΅Π³ΡΠ°Π΅Ρ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π² ΠΏΡΠΎΠ΅ΠΊΡ.
DTO Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π½Π°Π΄ΡΠΆΠ½ΡΠΌΠΈ ΠΈ ΡΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΠ°Π±Π»ΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΡΠ»ΠΈ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ DTO Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠΏΡΡΡΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΡ, ΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΠ»Π°Π³Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠΈΠ»ΠΈΡ, ΡΡΠΎΠ±Ρ Π²Π°ΡΠ΅ API ΠΎΡΡΠ°Π²Π°Π»ΠΎΡΡ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΡΠΌ. DTO Π΄ΠΎΠ»ΠΆΠ½Ρ βΠ»Π΅Π³ΠΊΠΎ ΡΠΈΡΠ°ΡΡΡΡβ, Π²Π΅Π΄Ρ Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ Π΅ΡΡΡ Ρ ΠΎΡΠΎΡΠ΅Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΡΠ»ΠΎΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ β ΠΎΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π΅ΡΠ»ΠΈ Π΅Π³ΠΎ ΡΡΠΆΠ΅Π»ΠΎ Π½Π°ΠΉΡΠΈ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΡ DTO, Π° ΠΏΠΎΡΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π»ΠΈ ΠΎΠ½ΠΈ Π½Π°ΡΠΈΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ.
ΠΠΎΠΊΠ°ΠΆΠΈ Π½Π°ΠΌ ΠΊΠΎΠ΄!
ΠΡΠΎΡ ΠΊΠΎΠ΄ Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΡΡΠ°Π½Π½ΡΠΌ, Π½ΠΎ Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΆΠΈΠ²Π°ΠΉΡΠ΅. Π ΠΎΡΡΠ°Π²ΡΠ΅ΠΉΡΡ ΡΠ°ΡΡΠΈ ΠΏΠΎΡΡΠ° Ρ ΠΎΠ±ΡΡΡΠ½Ρ ΠΏΠΎΡΠ΅ΠΌΡ Ρ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΡΡ Π½Π° Π΄Π°Π½Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΎΠ½Π° Π΄Π°Π΅Ρ. ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ Π²Π°ΠΌ ΡΡΠ°Π½Π΅Ρ Π²ΡΡ ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΠΈ Π²Ρ ΠΎΡΠ΅Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄.
ΠΠ½ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΈΠ· Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΄Π»Ρ Π²ΡΠΏΡΡΠΊΠ½ΠΈΠΊΠΎΠ², ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½Π½ΡΠΉ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°. Π Π½ΡΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡ ΠΈΠΌΠ΅Π΅Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅, ΡΠΎΠ·Π½ΠΈΡΠ½ΡΡ ΠΈ ΠΎΠΏΡΠΎΠ²ΡΡ ΡΠ΅Π½Ρ. ΠΠ»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅Π½Ρ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ Double, Π½ΠΎ Π² ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ BigDecimal.
ΠΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π±Π°Π·ΠΎΠ²ΡΠΉ enum Π±Π΅Π· Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ ProductDTO. ΠΠ½ΡΡΡΠΈ Π½Π΅Π³ΠΎ, ΠΌΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌ DTO Π½Π° ΡΠ΅, ΡΡΠΎ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ Π·Π°ΠΏΡΠΎΡΠ°ΠΌ (Request) ΠΈ Π½Π° ΡΠ΅, ΡΡΠΎ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΠΎΡΠ²Π΅ΡΡ (Response). ΠΠ° ΠΊΠ°ΠΆΠ΄ΡΠΉ endpoint ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠΎ Request DTO ΠΈ ΡΡΠΎΠ»ΡΠΊΠΎ Response DTO ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ Π½Π°Ρ Π΄Π²Π° Response DTO, Π³Π΄Π΅ Public Ρ ΡΠ°Π½ΠΈΡ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ Private ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠΏΡΠΎΠ²ΡΡ ΡΠ΅Π½Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°.
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Ρ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ΄ΠΈΠ½-Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ β Π³Π΅ΡΡΠ΅Ρ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ. ΠΡΠ±Π°Ρ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @NotBlank ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΡΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Π² DTO Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΡΡΡΡΡ ΡΡΡΠΎΠΊΡ.
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΎΠ΄ΠΈΡ Π² DTO ΠΌΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°Π΅ΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Value ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Lombok Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ Π·Π° Π½Π°Ρ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΡ Π³Π΅ΡΡΠ΅ΡΡ.
ΠΠ»Ρ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ, Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΡ Π΄ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ ΡΡΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈ ΡΠ°Π·Π½ΠΈΡΠ° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π³Π»ΡΠ΄Π½ΠΎΠΉ ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π²Ρ Π½Π°ΡΠ½Π΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ DTO.
βΠΡΠΎ ΡΠΆΠ°ΡΠ½ΠΎ!β
ΠΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΡΡΠ°Π½Π½ΠΎ ΠΈ Π·Π΄Π΅ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±ΡΡΠ½ΡΡ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ². ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ· Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅.
ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² β ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ! ΠΡ Π΄Π΅Π»Π°Π΅ΠΌ ΡΡΠΎ ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΈΡΠ°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ. ΠΠ°Π»Π΅Π΅ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎΠ± ΡΡΠΎΠΌ ΡΡΡΡ Π±ΠΎΠ»ΡΡΠ΅, Π½ΠΎ ΠΏΠΎΠ²Π΅ΡΡΡΠ΅ ΠΌΠ½Π΅, ΡΡΠΎ ΠΏΡΠΈΠ½Π΅ΡΠ΅Ρ ΡΠ²ΠΎΠΈ ΠΏΠ»ΠΎΠ΄Ρ.
ΠΡ Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ². ΠΠ°, Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ°Π½Π½ΠΎ ΠΈ Ρ Ρ ΠΎΡΠ΅Π» Π±Ρ Π½Π°ΠΉΡΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΡΡΠ΅. Π‘Π΅ΠΉΡΠ°Ρ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π°Π²ΡΠΎΠ³Π΅Π½Π΅ΡΠ°ΡΠΈΡ Π³Π΅ΡΡΠ΅ΡΠΎΠ² ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Lombok Π΄Π»Ρ Π·Π°ΠΊΡΡΡΠΈΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° ΠΈ ΡΡΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ Ρ Π°ΠΊ. ΠΡΠ³Π»ΡΠ΄Π΅Π»ΠΎ Π±Ρ Π»ΡΡΡΠ΅, Π΅ΡΠ»ΠΈ Π±Ρ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ΠΏΠΎΠ»Ρ ΡΡΠ°Π·Ρ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ»ΠΎ Π±Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ DTO Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΡΠΊΠ΅ ΠΊΠΎΠ΄Π°. ΠΠ΄Π½Π°ΠΊΠΎ, Π² java Π½Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌ ΠΈΠΌΠ΅ΡΡ Π½Π΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠΎΠ»Ρ. ΠΡΠ»ΠΈ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ , ΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Π°Ρ ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ Π±ΠΎΠ»Π΅Π΅ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΠΌ.
ΠΡΠΎ (ΠΏΠΎΡΡΠΈ) ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ
ΠΠ°Π²Π°ΠΉΡΠ΅ Π²Π΅ΡΠ½Π΅ΠΌΡΡ ΠΊ Π½Π°ΡΠΈΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Ρ ΠΎΡΠΎΡΠ΅Π³ΠΎ DTO. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΠ²ΡΠ΅Ρ Π»ΠΈ ΠΈΠΌ Π½Π°Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄?
Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ
ΠΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ ΡΠ»ΡΡΡΠΈΠ»ΠΈ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΠΈ ΡΡΠΎ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΏΠΎΡΠ΅ΠΌΡ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π½Π°ΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠΉ ΠΏΠ°ΡΡΠ΅ΡΠ½. ΠΠ°ΠΆΠ΄ΡΠΉ API ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠ΅ΠΏΠ΅ΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΠ΅ΡΠ΅Π· ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. ΠΡΠ»ΠΈ DTO ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΊΡ Π² ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΉ ΡΠΈΠΏ β ΠΊΠΎΠ΄ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ ΠΈ IDE Π²ΡΠ΄Π°ΡΡ Π²Π°ΠΌ ΠΎΡΠΈΠ±ΠΊΡ. ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
Π ΡΠΎΠΌΡ ΠΆΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΠΌΡ ΠΈΡΠΊΠ»ΡΡΠ°Π΅ΠΌ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ endpoint ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ ΠΈ Π½Π΅ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ Π΅Ρ Π½Π° Π΄ΡΡΠ³ΠΎΠΌ.
Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½Π°Ρ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ°
Π’Π°ΠΊΠΎΠΉ ΡΡΠΈΠ»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ DTO ΡΠ»ΡΡΡΠ°Π΅Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΡΠ΅ΡΠ΅Π· Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π² Π³Π΅ΡΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄Π°Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π΅ΠΌΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΠΡΠΈΠΌΠ΅Ρ:
ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π² DTO ΠΌΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ Π΄Π°Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Π½Π°ΡΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠ°Π»Π° Π΄ΠΎΡΡΡΠΏΠ½Π° ΡΠ΅ΡΠ΅Π· Π³Π΅ΡΡΠ΅Ρ.
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΡ ΠΈ ΡΠ΅Π»ΠΎΡΡΠ½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π²ΠΎ Π²ΡΠ΅Ρ DTO, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ Π΄Π°Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. Π ΡΠ΅Π΄ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ API, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Ρ ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ ΡΠ°Π·Π½ΠΎΠΉ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΎΠΉ, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. Π₯ΠΎΡΡ ΡΡΠΎ ΠΈ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ, Π½ΠΎ Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π·Π°Π΄ΡΠΌΠ°ΡΡΡΡ Π² ΡΠ°ΠΊΠΈΡ ΡΠΈΡΡΠ°ΡΠΈΡΡ , Π° Π±ΡΠ΄ΡΡΠΈΠΌ ΡΠΈΡΠ°ΡΠ΅Π»ΡΠΌ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ½ΡΡΡ ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡ ΠΎΠΆΠΈΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ.
Π§ΠΈΡΠ°Π±Π΅Π»ΡΠ½ΠΎΡΡΡ & ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΡΡΡ
ΠΡΠ΄Π΅ΠΌ ΡΠ΅ΡΡΠ½Ρ: Π² Π½Π°ΡΠ΅ΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π±Π»ΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π£ Π½Π°Ρ Π΅ΡΡΡ 4 ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, Π±Π΅Π· ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ, ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ DTO ΠΈΠΌΠ΅Π΅Ρ Π΄Π»ΠΈΠ½Π½ΡΡ ΡΡΡΠΎΠΊΡ Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ². ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠ½Π΅ΡΡΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π»ΠΈΡΠ½ΠΈΡ βΡΡΠΌΠΎΠ²β Π² ΠΊΠΎΠ΄Π΅ c ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ DTO. ΠΠΎ Π΄Π°ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ, Π±ΠΎΠΉΠ»Π΅ΡΠΏΠ»Π΅ΠΉΡ ΠΎΡΡΠ°Π΅ΡΡΡ Π³Π»Π°Π²Π½ΡΠΌ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠΌ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π²Π΅ΡΠΊΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΈΠ»Ρ. ΠΠ»Ρ ΠΌΠ΅Π½Ρ, ΡΡΠΈ Π·Π°ΡΡΠ°ΡΡ Π²ΡΠ΅ Π΅ΡΠ΅ ΡΡΠΎΡΡ ΡΠΎΠ³ΠΎ.
Π ΡΠΎΠΌΡ ΠΆΠ΅, ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ Π²ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π½Π°ΡΠΈΡ DTO ΠΊΠ»Π°ΡΡΠΎΠ². ΠΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠ΄ ΠΈ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ Π²ΡΠ΅ ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ ΠΈΠ· ΡΠΈΠ³Π½Π°ΡΡΡΡ ΠΊΠ»Π°ΡΡΠ°. ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠΏΠΈΡΠΊΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ². ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π½Π°ΠΆΠ°ΡΡ ctrl + q Π² IntelliJ ΠΈ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ»Π΅ΠΉ.
Π Π½Π°ΡΠ΅ΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅ ΠΌΡ ΠΏΠΈΡΠ΅ΠΌ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ Π΅Π΄ΠΈΠ½ΠΎΡΠ°Π·ΠΎΠ²ΠΎ, Ρ.ΠΊ. ΠΎΠ½Π° ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. Π‘ΠΎΠ·Π΄Π°Π»ΠΈ Π½ΠΎΠ²ΠΎΠ΅ DTO β ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ Π² ΠΏΠΎΠ΄Π°ΡΠΎΠΊ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
Π Π² Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π½Π°ΡΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌ, ΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π½Ρ ΠΏΠΈΡΠ°ΡΡ ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΡΡΠΈΠ»ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΡΡΠΈΡΠ°ΡΡ Π½Π°ΡΠ΅Π½ΠΊΡ Π½Π° ΡΠΎΠ²Π°Ρ:
Π java, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅:
ΠΡΠ²ΠΎΠ΄
Π― Π½Π΅ ΠΆΠ΄Ρ, ΡΡΠΎ Π²Ρ ΡΡΠ°Π·Ρ ΠΆΠ΅ ΠΏΠΎΠΉΠ΄Π΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ Π²ΡΠ΅ Π²Π°ΡΠΈ DTO. ΠΠΎ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π΅ΡΠ°Π»Π΅ΠΉ ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠ΅ΡΠΏΠ½ΡΡΡ Π΄Π»Ρ ΡΠ΅Π±Ρ:
Π‘ΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ Π² PHP. Data Transfer Object. ΠΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Laravel
Π ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π»Π΅ΠΆΠΈΡ ΡΠ°Π±ΠΎΡΠ° Ρ Π΄Π°Π½Π½ΡΠΌΠΈ. ΠΠΎΡΡΠΈ ΠΊΠ°ΠΆΠ΄Π°Ρ Π·Π°Π΄Π°ΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ, ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ Π»ΡΠ±ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΎΡΠ΅Ρ Π±ΠΈΠ·Π½Π΅Ρ.
ΠΡ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, ΠΈ ΡΠ°ΠΌΠΈ ΡΡΠΎ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ: Π² Π½Π°ΡΠ°Π»Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π²Ρ Π½Π°ΡΠΈΠ½Π°Π΅ΡΠ΅ Π½Π΅ Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ², Π° Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, ΠΊΠ°ΠΊ ΠΈΡ Π½Π°Π·ΡΠ²Π°Π΅Ρ Laravel. ΠΡΡΠΏΠ½ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ Π²ΡΠΈΠ³ΡΡΠ²Π°ΡΡ ΠΎΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ERDs ΠΈ Π΄ΡΡΠ³ΠΈΡ Π²ΠΈΠ΄ΠΎΠ² Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌ Π΄Π»Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π±ΡΠ΄ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π’ΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ ΡΡΠ½ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΠ°ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΎΡΠΊΠΈ Π²Ρ ΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π²Π°ΡΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ Π² ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅, ΡΡΠΎΠ±Ρ Π²ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π² Π²Π°ΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΌΠΎΠ³Π»ΠΈ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡΠΌ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ ΡΠ΅ΠΉΡΠ°Ρ Π΄ΡΠΌΠ°Π΅ΡΠ΅ ΠΎ ΠΌΠΎΠ΄Π΅Π»ΡΡ , Π½ΠΎ ΡΡΠΎ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΠ°ΠΊ. Π‘Π½Π°ΡΠ°Π»Π° Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π³ΠΎΠ² Π½Π°Π·Π°Π΄.
Π’Π΅ΠΎΡΠΈΡ ΡΠΈΠΏΠΎΠ²
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ (DTO) Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ Π·Π½Π°Π½ΠΈΡ ΠΎ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΡΠΎΡΠ½ΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΌΠΈ Ρ ΠΎΠ±ΡΡΡΠ½Ρ, ΠΊΠ°ΠΊ Ρ Π±ΡΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅.
Π‘ΠΈΠ»Π° ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ β ΡΠΈΠ»ΡΠ½Π°Ρ ΠΈΠ»ΠΈ ΡΠ»Π°Π±Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ β ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΌΠΎΠΆΠ΅Ρ Π»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ²ΠΎΠΉ ΡΠΈΠΏ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½Π° Π±ΡΠ»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π°.
PHP β ΡΡΠΎ ΡΠ»Π°Π±ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ·ΡΠΊ:
PHP ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π°Π±ΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ. ΠΡΠ΄ΡΡΠΈ ΡΠ·ΡΠΊΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ HTTP-Π·Π°ΠΏΡΠΎΡΠΎΠΌ, ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠΎΠΊΠΎΠΉ.
ΠΠ°ΠΆΠ΅ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΡΡΡΠΎΠ³ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΈΠΏΠΎΠ² PHP ΡΠ»Π°Π±Π°. ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ ΡΠΈΠΏΠ° ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π±Π΅Π· Π³Π°ΡΠ°Π½ΡΠΈΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»ΡΠ±ΠΎΠ³ΠΎ Π±ΡΠ΄ΡΡΠ΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ.
ΠΠ°ΠΊ Ρ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ», PHP ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π°Π±ΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΡΠ΅ Π²Ρ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ Π΄Π΅Π»ΠΎ, Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊΠ°. ΠΠ΄Π½Π°ΠΊΠΎ Ρ ΡΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ Π΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ: Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΈΡ ΠΎΠ΄ΡΡ Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΌΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° Π΄Π°Π½Π½ΡΡ . ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, ΡΠΎ ΡΠ΅Π»ΡΠΉ ΡΡΠ΄ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΏΡΠΎΡΡΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ.
ΠΠΈΠ΄ΠΈΡΠ΅ Π»ΠΈ, ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠΊΠ°Π·ΡΠ΅ΠΌΠΎ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΡΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±ΡΠ» ΡΠ΅Π»ΡΠΉ ΡΡΠ΄ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΡΠ»Π°Π±ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ . ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΡΠΈΠ»ΡΠ½Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ Π΄Π°Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π»ΡΡΡΡΡ Π³Π°ΡΠ°Π½ΡΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΊΠΎΠ΄ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²Π΅Π΄Π΅Ρ ΡΠ΅Π±Ρ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ: ΡΡΠΎ Π½Π΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ·ΡΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ! ΠΡ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π³Π»ΡΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ. ΠΠΎ ΠΊΠΎΠ³Π΄Π° ΡΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ, Π²Ρ ΡΠ²Π΅ΡΠ΅Π½Ρ, ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ Π² ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅.
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΈΠΏΡ
ΠΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ: ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΈΠΏΡ. Π ΠΈΠΌΠ΅Π½Π½ΠΎ Π·Π΄Π΅ΡΡ Π²ΡΠ΅ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌ.
ΠΠΏΡΡΡ ΠΆΠ΅, ΡΡΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠΈΠ»ΡΠ½ΡΡ ΡΡΠΎΡΠΎΠ½ PHP: ΠΏΡΠΎΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π» ΡΠΊΡΠΈΠΏΡ, ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΡΠΎ Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°Π·Π½ΠΈΡΠ° ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΡΠ·ΡΠΊΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ.
ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΡΡ ΡΡΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π²ΡΡΠ΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ΅Π·ΠΌΠ΅ΡΠ½ΡΠΌ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ ΡΡΡΡ Π΄Π°Π»ΡΡΠ΅.
ΠΠΏΡΡΡ ΠΆΠ΅, Π΅ΡΡΡ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½Π°Ρ ΡΡΠΎΡΠΎΠ½Π°: ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ PHP ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΠ²ΠΎΠΈ ΡΠΈΠΏΡ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΈΠΏΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π²Π΅ΡΡΠΈΡΡΡΡ Π½Π΅ΡΠ΄Π°ΡΠ΅ΠΉ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Ρ Π²Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΡΠΊΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ° Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ, Π½ΠΎ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠΎΡΠ΅ΡΠΏΠ΅Π»Π° ΠΊΡΠ°Ρ .
ΠΡΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΈΠΏΠΎΠ² Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π΅Π»Π°Π΅Ρ PHP Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ. ΠΠΎΡΠΎΠΌΡ ΠΊΠ°ΠΊ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π° Π²ΡΠΏΠΎΠ»Π½ΠΈΡ Π²ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²ΡΠ΅Ρ ΡΠΈΠΏΠΎΠ² Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅, Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ, IDE, ΡΠ°ΠΊΠ°Ρ ΠΊΠ°ΠΊ PhpStorm, ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ.
ΠΠΌΠ΅Ρ Π² Π²ΠΈΠ΄Ρ Π²ΡΡ ΡΡΡ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΏΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ Π²Π΅ΡΠ½ΡΡΡΡΡ ΠΊ ΡΠ΄ΡΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ: Π΄Π°Π½Π½ΡΠΌ.
Π‘ΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ
ΠΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ Π»ΠΈ Π²Π°ΠΌ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ βΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ Π΄Π°Π½Π½ΡΡ β, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π±ΡΠ» Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΡΠΏΠΈΡΠΎΠΊ? ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΊΠ»ΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΠ»Π΅ΠΉ? Π Π²Ρ ΡΡΠ²ΡΡΠ²ΠΎΠ²Π°Π»ΠΈ Π±ΠΎΠ»Ρ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π½Π΅ Π·Π½Π°Π»ΠΈ ΡΠΎΡΠ½ΠΎ, ΡΡΠΎ Π±ΡΠ»ΠΎ Π² ΡΡΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅? ΠΠ΅ Π±ΡΠ΄ΡΡΠΈ ΡΠ²Π΅ΡΠ΅Π½Π½ΡΠΌ, Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»ΠΈ Π΄Π°Π½Π½ΡΠ΅ Π² Π½Π΅ΠΌ ΡΠ°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊΠΈΠΌΠΈ Π²Ρ ΠΈΡ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠΎΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ½Ρ?
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ ΡΠ΅Π±Π΅, ΠΎ ΡΠ΅ΠΌ Ρ Π³ΠΎΠ²ΠΎΡΡ: ΡΠ°Π±ΠΎΡΠ° Ρ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ Laravel. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ CRUD Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°:
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΈΡΠΊΠ°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π²ΠΎΡ ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ ΡΡΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΡΠΎΠΉ ΡΠ²Π°Π»ΠΊΠ΅:
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ ΡΠ΅Π±Π΅ Π½Π° ΠΌΠΈΠ½ΡΡΡ, ΡΡΠΎ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π½Π°Π΄ ΡΡΠΈΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ, ΠΈ ΡΡΠΎ Π²Π°Ρ ΠΊΠΎΠ»Π»Π΅Π³Π° Π½Π°ΠΏΠΈΡΠ°Π» ΡΡΠΎΡ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π° ΠΏΡΡΡ ΠΌΠ΅ΡΡΡΠ΅Π² Π½Π°Π·Π°Π΄: Ρ ΠΌΠΎΠ³Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Π²Π°ΠΌ, ΡΡΠΎ Π²Ρ Π½Π΅ Π±ΡΠ΄Π΅ΡΠ΅ Π·Π½Π°ΡΡ, Ρ ΠΊΠ°ΠΊΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅, Π½Π΅ Π΄Π΅Π»Π°Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π³ΡΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΡ Π²Π΅ΡΠ΅ΠΉ, ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π²ΡΡΠ΅.
ΠΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΡΡΠΎ ΡΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ ΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΏΠΎΠ΄ΡΠΏΠΎΡΡΠ΅ΠΌ Π² ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ ΡΠΎΠ³ΠΎ, Ρ ΡΠ΅ΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»ΠΎ. Π’Π°ΠΊΠΈΠ΅ ΡΠ·ΡΠΊΠΈ, ΠΊΠ°ΠΊ Rust, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠ°ΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠΎΡΡΠΎ:
Π‘ΡΡΡΠΊΡΡΡΠ° β ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ! Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, PHP Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΡΡΡΠΊΡΡΡ. ΠΠΎ Ρ Π½Π΅Π³ΠΎ Π΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ:
Π’ΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ Ρ PHP 7.4. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠΈΡΠ°Π΅ΡΠ΅ ΡΡΡ ΡΡΠ°ΡΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΅ΡΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ β Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π²Π°Ρ ΠΏΠΎΠ·ΠΆΠ΅ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅, ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉΡΠ΅ ΡΠΈΡΠ°ΡΡ.
ΠΠ»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ PHP 7.4 ΠΈΠ»ΠΈ Π²ΡΡΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΡΡΠΎΠ³ΠΎ:
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ, Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ Π² Π²Π°ΡΡ IDE, Π²ΡΠ΅Π³Π΄Π° ΡΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠΎΠ±ΡΠΈΡΡ Π½Π°ΠΌ, Ρ ΠΊΠ°ΠΊΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»ΠΎ.
ΠΡΠΎΡ ΡΠ°Π±Π»ΠΎΠ½ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π½Π΅ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π² ΡΠΈΠΏΡ, ΡΡΠΎΠ±Ρ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°ΡΠΈ Π΄Π°Π½Π½ΡΠ΅ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ βΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ β ΠΈΠ»ΠΈ DTO (Data Transfer Object). ΠΡΠΎΡ ΡΠ°Π±Π»ΠΎΠ½ Ρ Π½Π°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ Π²Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Π²Π°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°. ΠΠ»Ρ ΡΡΠ΅Π΄Π½ΠΈΡ ΠΈ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π΄Π°Π½Π½ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΈΠ·Π±ΡΡΠΎΡΠ΅Π½.
ΠΠ±ΡΡΠΆΠ΄Π°Ρ ΡΡΡ ΡΡΠ°ΡΡΡ Ρ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ, Π΄ΡΡΠ·ΡΡΠΌΠΈ ΠΈΠ»ΠΈ Π² ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π΅ Laravel, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ Ρ Π»ΡΠ΄ΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ Π²ΠΈΠ΄Π΅Π½ΠΈΠ΅ ΡΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡΠ΄Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΡΡ ΠΈ ΡΠ»Π°Π±ΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ PHP. Π ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π΅ΡΡΡ ΡΡΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π² ΡΠ²ΠΎΠ΅ ΠΎΠΏΡΠ°Π²Π΄Π°Π½ΠΈΠ΅.
ΠΠΎ ΠΌΠΎΠ΅ΠΌΡ ΠΎΠΏΡΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² Π² ΡΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π½Π°Π΄ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΠ΅Π·Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ, ΡΡΠΎΠ±Ρ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΠΊΠΎΠ³Π½ΠΈΡΠΈΠ²Π½ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ. ΠΡ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ Π½Π°ΡΠΈΠ½Π°ΡΡ ΠΎΡΠ»Π°Π΄ΠΊΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Ρ ΠΎΡΡΡ Π·Π½Π°ΡΡ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΏΡΡΠΌΠΎ ΠΏΠΎΠ΄ ΡΡΠΊΠΎΠΉ, ΡΡΠΎΠ±Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΌΠΎΠ³Π»ΠΈ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° ΡΠΎΠΌ, ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ: ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ DTO ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΡ ΡΠ΅Π½Ρ: ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄Ρ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ²; ΠΠ°ΠΌ ΡΠ°ΠΊΠΆΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°ΠΏΡΠΎΡ Π΄Π°Π½Π½ΡΡ Ρ DTO.
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ DTO ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠΈΠ²Π°ΡΡ. ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²Ρ ΠΏΠΎΡΠ΅ΡΡΠ΅ΡΠ΅, Π½Π°ΠΏΠΈΡΠ°Π² ΡΡΠΎΡ ΠΊΠΎΠ΄, Π²Ρ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡΡΠ΅ΡΠ΅ Π΅Π³ΠΎ Π² Π΄ΠΎΠ»Π³ΠΎΡΡΠΎΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π΅.
ΠΠ΄Π½Π°ΠΊΠΎ Π²ΠΎΠΏΡΠΎΡ ΠΎ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ DTO ΠΈΠ· βΠ²Π½Π΅ΡΠ½ΠΈΡ β Π΄Π°Π½Π½ΡΡ Π²ΡΠ΅ Π΅ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΠΎΡΠ²Π΅ΡΠ΅.
Π€Π°Π±ΡΠΈΠΊΠΈ DTO
ΠΠ°ΠΊ ΠΌΡ ΡΡΡΠΎΠΈΠΌ DTO? Π― ΠΏΠΎΠ΄Π΅Π»ΡΡΡ Ρ Π²Π°ΠΌΠΈ Π΄Π²ΡΠΌΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΡΡΠ½Ρ, ΠΊΠ°ΠΊΠ°Ρ ΠΈΠ· Π½ΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠΎΠ΅ Π»ΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠ΅.
ΠΠ΅ΡΠ²ΡΠΉ-ΡΠ°ΠΌΡΠΉ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ: ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΡΠΈΠΊΠΈ.
ΠΠ°Π»ΠΈΡΠΈΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΡΠΈΠΊΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π²Π°Ρ ΠΊΠΎΠ΄ ΡΠΈΡΡΡΠΌ Π½Π° ΠΏΡΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΡΠ° ΡΠ°Π±ΡΠΈΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΆΠΈΡΡ Π² ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΌ ΡΠ»ΠΎΠ΅.
Π§ΡΠΎ ΠΏΠ»ΠΎΡ ΠΎΠ³ΠΎ Π² ΡΠ°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅? ΠΡ, Π²ΠΎ-ΠΏΠ΅ΡΠ²ΡΡ : ΠΎΠ½ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π»ΠΎΠ³ΠΈΠΊΡ Π² Π΄ΠΎΠΌΠ΅Π½. DTO, ΠΊΠΎΡΠΎΡΡΠΉ ΠΆΠΈΠ²Π΅Ρ Π² Π΄ΠΎΠΌΠ΅Π½Π΅, ΡΠ΅ΠΏΠ΅ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°ΡΡ ΠΎ CustomerRequest ΠΊΠ»Π°ΡΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΆΠΈΠ²Π΅Ρ Π² ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΌ ΡΠ»ΠΎΠ΅.
ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ Π΄ΠΎΠΌΠ΅Π½Π°-Π½Π΅ ΡΠ°ΠΌΠ°Ρ Π»ΡΡΡΠ°Ρ ΠΈΠ΄Π΅Ρ. ΠΠ΄Π½Π°ΠΊΠΎ Ρ Π½Π΅Π³ΠΎ Π΅ΡΡΡ ΠΌΠΎΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠ΅. ΠΠ° ΡΠΎ Π΅ΡΡΡ Π΄Π²Π΅ ΠΏΡΠΈΡΠΈΠ½Ρ.
ΠΠΎ-Π²ΡΠΎΡΡΡ , ΠΈ ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π°; Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Ρ ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ PHP: ΠΎΠ½ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ.
ΠΠΈΠ΄ΠΈΡΠ΅ Π»ΠΈ, Π²Ρ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Π²Π°ΡΠΈ DTO Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ ΠΈΠΌΠ΅Π»ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Ρ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π°: ΡΡΠΎ Π½Π΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΡΡΡ ΠΈ ΠΎΡΠ΅Π½Ρ ΡΠ±ΠΈΠ²Π°Π΅Ρ Ρ ΡΠΎΠ»ΠΊΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ ΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ nullable ΠΈΠ»ΠΈ default-value. ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° Π² DTO, ΠΈ ΠΏΡΡΡΡ ΠΎΠ½ ΡΡΡΠΎΠΈΡ ΡΠ΅Π±Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π΄Π°Π½Π½ΡΡ Π² ΡΡΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ, ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΡΠ°ΠΊΠΆΠ΅ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½, Π° ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΠ΅ΡΡ Π² Π½Π΅Π²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ DTO. Π― ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Ρ Π΄Π΅ΡΠΆΠ°ΡΡ ΡΡΠΎ βΠΏΡΠ΅Π±ΡΠ²Π°Π½ΠΈΠ΅ Π² ΡΠ΅ΠΌΠ½ΠΎΡΠ΅β Π² ΠΊΠ»Π°ΡΡΠ΅ DTO, ΡΡΠΎΠ±Ρ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±Π΅Π· Π»ΠΈΡΠ½ΠΈΡ ΠΌΡΡΠ»Π΅ΠΉ ΠΈΠ·Π²Π½Π΅.
ΠΡΠ»ΠΈ Π±Ρ PHP ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π» ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², Ρ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΡΠ°ΠΊΠΎΠΉ ΡΠ°Π±Π»ΠΎΠ½:
ΠΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° PHP Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΡ ΡΡΠΎ, Ρ Π±Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠ΅Π» ΠΏΡΠ°Π³ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌΡ. ΠΠΎ ΡΡΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ΅Π±Ρ. ΠΠ΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΠ΅ΡΡ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΡΠΎ, ΡΡΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π²Π°ΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ.
ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ
ΠΠ°ΠΊ Ρ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π» ΡΠ°Π½Π΅Π΅, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ²ΠΎΠΉΡΡΠ² Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ DTO: docblocks. ΠΠ°ΠΊΠ΅Ρ DTO ΠΎΡ Spatie, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ»ΠΈ, ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΈΡ .
ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ docblocks Π½Π΅ Π΄Π°ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π³Π°ΡΠ°Π½ΡΠΈΠΉ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠ΅ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΡΠΎΠΌΡ ΡΠΈΠΏΡ, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΈ Π³ΠΎΠ²ΠΎΡΡΡ. Π ΡΡΠ°ΡΡΡΡ, PHP ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΉ API ΡΠ΅ΡΠ»Π΅ΠΊΡΠΈΠΈ, ΠΈ Ρ Π½ΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»ΡΡΠ΅.
Π Π΅ΡΠ΅Π½ΠΈΠ΅, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ΅ ΡΡΠΈΠΌ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ PHP. ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ PHP 7.4 ΠΈ Ρ ΠΎΡΠΈΡΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΠΈ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Π°ΡΠΈ ΡΠΈΠΏΡ docblock Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ±Π»ΡΠ΄Π°ΡΡΡΡ, ΡΡΠΎΡ ΠΏΠ°ΠΊΠ΅Ρ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π°Π½Π½ΡΠ΅ Π»Π΅ΠΆΠ°Ρ Π² ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠΎΡΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡΡ Π²Π°ΠΆΠ½ΡΡ ΡΡΡΠΎΠΈΡΠ΅Π»ΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ². ΠΠ±ΡΠ΅ΠΊΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ Π²Π°ΠΌ ΡΠΏΠΎΡΠΎΠ± ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ ΠΈ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ.