Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ° document validation error ΠΊΠΎΠ΄ 71
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ΠΈ ΠΊΠ°ΠΊ ΠΈΡ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ: ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ
ΠΠ°Π»ΠΈΡΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΠΊΠΎΠ΄Π΅ ΡΡΡΠ°Π½ΠΈΡΡ ΡΠ°ΠΉΡΠ° Π²ΡΠ΅Π³Π΄Π° Π²Π»Π΅ΡΠ΅Ρ Π·Π° ΡΠΎΠ±ΠΎΠΉ Π½Π΅Π³Π°ΡΠΈΠ²Π½ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ β ΠΎΡ ΡΡ ΡΠ΄ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΉ Π² ΡΠ°Π½ΠΆΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π΄ΠΎ ΠΆΠ°Π»ΠΎΠ± ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΡΠΈΠ±ΠΊΠΈ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π½Π°Π±Π»ΡΠ΄Π°ΡΡΡΡ ΠΊΠ°ΠΊ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ, ΡΠ°ΠΊ ΠΈ Π½Π° ΠΈΠ½ΡΡ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ°Ρ , ΠΈΡ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΠ΅Π»ΡΡΡΠ²ΡΠ΅Ρ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠ΅ΡΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅Π²Π°Π»ΠΈΠ΄Π½ΡΠΌ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π·Π°ΠΌΠ΅ΡΠ°ΡΡ Π΄Π°ΠΆΠ΅ Π½Π΅ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ, Π΄ΡΡΠ³ΠΈΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ Π±Π΅Π· ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π°ΡΠ΄ΠΈΡΠ°, Π°Π½Π°Π»ΠΈΠ·Π°. Π ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ΠΈ ΠΊΠ°ΠΊ ΠΈΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ, ΠΌΡ ΡΠ΅ΠΉΡΠ°Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ.
ΠΡΠΈΠ±ΠΊΠ° Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ, ΡΡΠΎ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅?
ΠΠ»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ HTML β ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ·ΡΠΊ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ Π² Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅. HTML, ΠΊΠ°ΠΊ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ·ΡΠΊ, ΠΈΠΌΠ΅Π΅Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°, Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ ΠΈ Ρ. Π΄. ΠΡΠ»ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΏΡΠ°Π²ΠΈΠ»Π° Π½Π΅ ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ, ΡΠΎ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ°ΠΉΡΠ° Π±ΡΠ΄ΡΡ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²ΠΈΠ΄Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΡΠ»ΠΈ HTML-ΠΊΠΎΠ΄ ΡΠ΅ΡΡΡΡΠ° Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΡ W3C, ΡΠΎ ΠΎΠ½ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅Π²Π°Π»ΠΈΠ΄Π½ΡΠΌ, ΠΎ ΡΠ΅ΠΌ ΠΌΡ ΠΏΠΈΡΠ°Π»ΠΈ Π²ΡΡΠ΅.
ΠΠΎΡΠ΅ΠΌΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ΡΠ°ΠΉΡΠ° ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π½Π° ΡΠ°Π½ΠΆΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π²ΠΎΡΠΏΡΠΈΡΡΠΈΠ΅?
ΠΠ°Π»ΠΈΡΠΈΠ΅ ΠΏΠΎΠ³ΡΠ΅ΡΠ½ΠΎΡΡΠ΅ΠΉ Π² ΠΊΠΎΠ΄Π΅ β ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π±ΠΎΡΠΎΡΡΡΡ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠΈΡΠΊΠΎΠ²ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Β«ΡΠΈΡΠ°ΡΡΒ» HTML-ΠΊΠΎΠ΄, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΉ, ΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΠΈ ΠΈ ΡΠ°Π½ΠΆΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΡΡΡΠ΄Π½Π΅Π½. ΠΠΎΠΈΡΠΊΠΎΠ²ΡΠ΅ ΡΠΎΠ±ΠΎΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΠΊΠ°ΠΊΠΈΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΡΡΡ, ΡΡΠΎ ΠΎΠ½ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ, ΠΊΠ°ΠΊΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ. ΠΡΠΎΠ±ΠΎ ΠΊΡΠΈΡΠΈΡΠ½Ρ ΡΠ°ΠΊΠΈΠ΅ ΡΠΈΡΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΡΠ΅ΡΡΡΡΠΎΠ², ΠΈΠΌΠ΅ΡΡΠΈΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡ.
ΠΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ?
ΠΠ»Ρ ΡΡΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π»ΠΈΠ±ΠΎ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°ΡΠ΄ΠΈΡ ΡΠ°ΠΉΡΠ°, Π»ΠΈΠ±ΠΎ Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ. ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ°ΠΌΡΡ
ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ
ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ²ΠΈΡ The W3C Markup Validation Service, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΉ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΎΠ³Π»ΡΠ΄ΠΊΠΎΠΉ Π½Π° World Wide Web Consortium (W3C). Π Π°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΡΠΉ Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΡΠΈ ΡΠΏΠΎΡΠΎΠ±Π°, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΡΡ
ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΠ°ΠΉΡΠ°:
ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΡΠ²Π»Π΅Π½Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π½ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ, ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΡ W3C. ΠΠΎ Ρ ΠΎΠ΄Ρ Π°Π½Π°Π»ΠΈΠ·Π° Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΡΠ»Π°Π±ΡΠ΅ ΠΌΠ΅ΡΡΠ° ΡΠΎ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π°, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡΠΈ ΠΊΠΎΠ΄Π°:
ΠΠ»Π°Π³ΠΈΠ½Ρ Π΄Π»Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π½Π°ΠΉΡΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅
Π Π΅ΡΠΈΡΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΡΡ Π·Π°Π΄Π°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ Π±ΡΠ°ΡΠ·Π΅Ρ. ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ (Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠ΅):
ΠΠΎΡΠ»Π΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½ΡΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ, Π±ΡΠ΄Π΅ΡΠ΅ Π»ΠΈ Π²Ρ ΡΡΡΡΠ°Π½ΡΡΡ Π²ΡΡΠ²Π»Π΅Π½Π½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΠΊΡΠΏΠ΅ΡΡΡ Π°ΠΊΡΠ΅Π½ΡΠΈΡΡΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΡΠ΄Π΅Π»ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Ρ Π²Π½Π΅ΡΠ½Π΅ΠΉ/Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΠ½ΡΠ΅Π½ΡΡ, Π΄ΡΡΠ³ΠΈΠΌ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ°ΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡΡ Π½Π΅Π»ΡΠ·Ρ ΠΎΡΡΠ°Π²Π»ΡΡΡ Π±Π΅Π· Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ, Π²Π΅Π΄Ρ Π΅ΡΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π΅ Π±ΡΠ΄ΡΡ ΠΌΠ΅ΡΠ°ΡΡ ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΠΌ Π±ΠΎΡΠ°ΠΌ, ΡΠΎ ΠΎΠ½ΠΈ ΡΠΎΡΠ½ΠΎ Π½Π°ΡΠ½ΡΡ ΡΠ°Π·Π΄ΡΠ°ΠΆΠ°ΡΡ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Π΅ΠΉ ΡΠ°ΠΉΡΠ°.
ΠΠ°ΠΊ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΡ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ?
Π ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½ΡΠΆΠ½ΠΎ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ»Π°Π±ΡΡ
ΠΌΠ΅ΡΡΠ°Ρ
, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ
Ρ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠΎΠΌ β ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΡ
ΡΠΈΡΡΠ΅ΠΌ. ΠΡΠ»ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±ΡΠ»ΠΎ Π²ΡΡΠ²Π»Π΅Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ 25 ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΡΠΎ ΠΈΡ
Π½Π΅Π»ΡΠ·Ρ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ·-Π·Π° ΡΡΠ΄Π° ΠΏΡΠΈΡΠΈΠ½:
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ Π½Π΅ Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Ρ. ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ²Π»Π΅ΡΡ ΠΎΠΏΡΡΠ½ΠΎΠ³ΠΎ ΡΡΠΈΠ»Π°Π½ΡΠ΅ΡΠ°, ΠΎΠ΄Π½Π°ΠΊΠΎ Π»ΡΡΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ β Π·Π°ΠΊΠ°Π· ΡΡΠ»ΡΠ³ΠΈ Π² Π²Π΅Π±-Π°Π³Π΅Π½ΡΡΡΠ²Π΅, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ, Π° Π½Π΅ ΡΡΡΠ³ΡΠ±ΠΈΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ.
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈ SEO-Π°ΡΠ΄ΠΈΡ
ΠΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ β ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π³, Π²Π΅Π΄Ρ ΠΈΡ Π΅ΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΡΡΡΠ°Π½ΠΈΡΡ. ΠΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΏΡΠ»Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎ Π·Π°ΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ Π°ΡΠ΄ΠΈΡ ΡΠ°ΠΉΡΠ°. ΠΠ½ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΉΡΠΈ ΡΠ°Π·Π½ΡΠ΅ Π²ΠΈΠ΄Ρ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΏΠΎΠ²ΡΡΠΈΡ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ΅ΡΡΡΡΠ° Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΡ Π±ΠΎΡΠΎΠ², ΠΎΠ±ΡΡΠ½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ: ΡΠΊΠΎΡΠΎΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΡΡΠ°Π½ΠΈΡ, Π²Π΅ΡΡΡΠΊΠ°, ΠΏΠ΅ΡΠ΅ΡΠΏΠ°ΠΌ, Π΄ΡΡΠ³ΠΎΠ΅.
Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ° Π²ΡΠ΅Ρ ΡΠ°ΠΉΡΠ°Ρ Π½Π°Π±Π»ΡΠ΄Π°ΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ β ΠΈΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΊΠΎΡΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ, Π½ΠΎ ΠΈ ΠΎΡΡΠ°Π²Π»ΡΡΡ Π±Π΅Π· Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ Π½Π΅ ΡΡΠΎΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΠ°ΠΉΡΠΎΠ² Google ΠΈΠ»ΠΈ Β«Π―Π½Π΄Π΅ΠΊΡΒ», ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ Π½Π΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΡΠΎΠΈΡ Π²Π·Π΄ΠΎΡ Π½ΡΡΡ ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎ ΠΈ Π·Π°ΠΊΡΡΡΡ Π³Π»Π°Π·Π° Π½Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡΠ΅Π΅. ΠΠ»Π°Π΄Π΅Π»Π΅Ρ ΡΠ°ΠΉΡΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΠ°Π²ΠΈΡΡ Π²ΠΎ Π³Π»Π°Π²Ρ ΡΠ³Π»Π° ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΎΠ΅ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅, ΠΏΡΠΈ ΡΠ°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅ ΡΠ΅ΡΡΡΡ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΏΠΎΠ»Π½ΡΡΡΡΡ, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ ΠΈ Β«Π»Π΅ΡΠΈΡΡΡΡΒ» ΡΠ²ΠΎΠ΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. ΠΡΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΌΠ°Π»ΠΎ, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΡΡΡΠ°Π½ΠΈΡΡ ΠΈΡ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΠΈΠ»Π°ΠΌΠΈ ΠΈΠ»ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΈΠ²Π»Π΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΡΠΎΠ½Π½Π΅Π³ΠΎ ΡΠ°ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠ°. Π ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ Π»ΡΡΡΠ΅ Π·Π°ΠΊΠ°Π·Π°ΡΡ ΡΡΠ»ΡΠ³Ρ Ρ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΡΡΠ΄ΡΠΈΠΊΠ°.
ΠΡΠΈΠ±ΠΊΠΈ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ΡΠ°ΠΉΡΠ° β ΡΡΠΎ ΡΡΠΎ Π·Π° ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΊΠ°ΠΊ ΠΈΡ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ
ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π²Π΅Π±ΠΌΠ°ΡΡΠ΅ΡΠ° Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΡΠ²ΠΎΠΈ ΡΠ°ΠΉΡΡ Π½Π° Ρ ΠΎΡΡ ΡΡΠ°Π·Ρ-ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΈΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ. ΠΡΠΈ ΡΡΠΎΠΌ ΠΎΠ½ΠΈ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΠ°ΡΡΡΡ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΡΡΡΡΡ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΌΡΡΠ»Π° ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΡ, ΡΠ΅ΠΌ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° ΡΡΡΠ°Π½ΠΈΡ.
ΠΠ°Π»ΠΈΠ΄Π°ΡΠΈΡ ΡΠ°ΠΉΡΠ°
ΠΠΎ Π΅ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°ΠΊΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈ Π²Π»ΠΈΡΡΡ Π½Π° ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΡΠ°ΠΉΡΠ°. Π ΠΊ Π½ΠΈΠΌ ΠΎΡΠ½ΠΎΡΡΡΡΡ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅, ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ°ΠΊΡΠΎΡΡ. ΠΡ Π° ΠΊ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΈ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ ΡΠ°ΠΉΡΠ°. Π’Π°ΠΊ ΡΡΠΎ ΠΆΠ΅ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅?
ΠΡΠ»ΠΈ ΠΏΡΠΎΡΡΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΡΠΎ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ ΡΠ°ΠΉΡΠ° β ΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠΎΠ΄Π° ΡΠ°ΠΉΡΠ° Π½Π° ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΡ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ Π·Π°Π±ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠΈΠΉ ΡΠ΅Π³ β /html. Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ HTML5, Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠΌΠ΅Π½ΡΠ΅ΡΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎ ΠΎΡΠΈΠ±ΠΊΠ° ΠΊΠΎΠ΄Π°.
ΠΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π°, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ. Π ΠΎΠΏΡΡΡ-ΡΠ°ΠΊΠΈ, ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΠ·ΡΠΊ Π³ΠΈΠΏΠ΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ Β«ΡΡΠ΅ΡΠΏΠΈΡΒ» ΠΌΠ½ΠΎΠ³ΠΎΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Β«Π·Π°Π±ΡΡΠΈΠ΅Β» Π·Π°ΠΊΡΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΡΠ΅Π³Π° /head. Π ΡΠ½ΠΎΠ²Π° Π²Ρ Π½Π΅ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΡΠ°Π·Π½ΠΈΡΡ. ΠΠΎ ΠΎΠ½Π° Π΅ΡΡΡ))
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΠ°ΠΉΡΠ°, ΠΎΡΠΈΠ±ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ. Π ΡΡΠΎ Ρ ΡΠΆΠ΅, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΡΡΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΌΠΎΠ³ΡΡ ΠΏΡΠΎΡΠ²ΠΈΡΡΡΡ ΠΈ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎ. ΠΡ ΠΌΠΎΠΆΠ΅Ρ Π±Π»ΠΎΠΊΠΈ ΠΏΠΎΠΏΠ»ΡΠ²ΡΡ, ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅, Π° ΠΌΠΎΠΆΠ΅Ρ ΠΈ Π΅ΡΠ΅ ΡΡΠΎ-ΡΠΎ. ΠΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ, ΡΡΡΡΡΠΈ. Π Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ Π²ΡΠ΅ ΠΈΠ· Π½ΠΈΡ , Π±ΡΠΎΡΠ°ΡΡΡΡ Π² Π³Π»Π°Π·Π°.
Π ΡΠ΅ΠΌ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ?
ΠΡ ΠΊΠ°Π·Π°Π»ΠΎΡΡ-Π±Ρ, Π½Ρ ΠΈ ΡΡΠΎ ΡΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ? ΠΠ°, Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Π·Π°ΡΠ°ΡΡΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π½Π΅ Π²ΠΈΠ΄ΠΈΠΌΡ. Π’ΠΎΡΠ½Π΅Π΅, Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ. Π Π²Π΅Π΄Ρ ΡΡΡΠ°Π½ΠΈΡΡ Π½Π°ΡΠ΅Π³ΠΎ ΡΠ°ΠΉΡΠ° ΠΌΠΎΠ³ΡΡ ΠΏΠΎΡΠ΅ΡΠΈΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π»ΡΠ΄ΠΈ, Π½ΠΎ ΠΈ ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΠ΅ ΠΏΠ°ΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠ°ΠΉΡ. Π ΠΊΠ°ΠΆΠ΄ΡΡ ΠΎΡΠΈΠ±ΠΊΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ΠΈ Π½Π°Ρ ΠΎΠ΄ΡΡ Π½Π° ΡΠ°ΠΉΡΠ΅, ΠΎΠ½ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΠΎΠΈΡΠΊΠΎΠ²ΠΈΠΊΠΎΠ², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Π―Π½Π΄Π΅ΠΊΡ ΠΈΠ»ΠΈ ΠΡΠ³Π».
Π ΠΏΠΎΠΈΡΠΊΠΎΠ²ΠΈΠΊΠΈ, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Π²ΠΈΠ΄Ρ ΡΡΠΎ Π½Π° ΡΠ°ΠΉΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΊΠΎΠ΄Π°, Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠ³ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ²ΠΎΠ΄ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°ΠΉΡ ΠΏΠ»ΠΎΡ ΠΎΠΉ. Π Π·Π½Π°ΡΠΈΡ, Π½Π΅ Π±ΡΠ΄ΡΡ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡΡ Π΅Π³ΠΎ Π² ΠΏΠΎΠΈΡΠΊΠ΅. ΠΡ Π° ΡΡΠΎ ΡΠΆΠ΅ Π±ΡΠ΄Π΅Ρ ΠΎΠ·Π½Π°ΡΠ°ΡΡ, ΡΡΠΎ ΠΏΡΠΎΡΠ°ΠΉ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»ΠΈ Ρ ΠΏΠΎΠΈΡΠΊΠ°.
ΠΠ°, Π½Π°Π΄ΠΎ ΠΏΡΠΈΠ·Π½Π°ΡΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ ΠΏΠ΅ΡΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΠ°ΠΉΡΠ° ΠΈΠ·-Π·Π° ΠΎΡΠΈΠ±ΠΎΠΊ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ, ΡΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ΅Π΄ΠΊΠΎΠ΅ ΡΠ²Π»Π΅Π½ΠΈΠ΅. ΠΠΎ ΡΡΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π° Π·Π½Π°ΡΠΈΡ, Π½Π°Π΄ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠ΅ΠΉ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ. Π ΡΡΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ? ΠΠΎΠ½ΡΡΠ½ΠΎΠ΅ Π΄Π΅Π»ΠΎ, Π²Π½Π°ΡΠ°Π»Π΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ.
ΠΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΡΡΡΠ½ΡΡ ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΡΡΠ΄ΠΎΡΠΌΠΊΠΎΠ΅ ΠΈ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ΅ Π΄Π΅Π»ΠΎ, ΡΠΎ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ, ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ Β«ΠΠ°Π»ΠΈΠ΄Π°ΡΠΎΡΡΒ».
ΠΠ°Π»ΠΈΠ΄Π°ΡΠΎΡ Markup Validation Service.
ΠΡΠΎΡ ΡΠ΅ΡΠ²ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΠΊΠΎΠ΄ΠΎΠ² HTML ΠΈ XHTML, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π»ΡΡΡΡΡ ΠΎΡΠ½ΠΎΠ²ΠΎΠΉ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ ΡΡΡΠ°Π½ΠΈΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ° ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π΅Π³ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΡΡΡΡΠΊΡΡΡΡ. ΠΠ° ΡΡΠΎΡ ΡΠ΅ΡΠ²ΠΈΡ Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΠ°ΡΡΡ, Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠΉΡΠΈ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ http://validator.w3.org
ΠΠΎ Π·Π΄Π΅ΡΡ Π΅ΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΈ ΠΊ Π΄ΡΡΠ³ΠΈΠΌ Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡΠ°ΠΌ: ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΡ ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π·Π°ΠΊΠ°ΡΠ°Π½Ρ Π½Π° Ρ ΠΎΡΡΠΈΠ½Π³. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ Β«Π·Π½Π°ΡΡΒ» Π°Π΄ΡΠ΅Ρ ΡΠ°ΠΉΡΠ° ΠΈ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ. ΠΠΎΡ ΡΠ΅ΠΉΡΠ°Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΆΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° ΡΡΠΎΠΌ Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡΠ΅.
ΠΠΎΡΠ»Π΅ Π·Π°Ρ ΠΎΠ΄Π° Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ°, ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡΡΡ Π²ΡΡ Π΅Π³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½Π°Ρ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ°. ΠΠΎ Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΡΠ½Π½ΠΎΠ³ΠΎ ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΊ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ Π½Π΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΈ Π²ΡΡ ΡΠ²ΠΎΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π°Π΄ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΎΠΊΠ½ΠΎ Π²Π²ΠΎΠ΄Π° Π°Π΄ΡΠ΅ΡΠ° ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ:
ΠΠΎΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ Π½Π΅Π³ΠΎ ΠΈ Π½Π°Π΄ΠΎ Π½Π°ΡΠΈΠ½Π°ΡΡ.
ΠΠΎΠΎΠ±ΡΠ΅-ΡΠΎ, ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ΡΠ°ΠΉΡΠ° ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΠΏΡΠΎΡΡΠ°, ΠΊΠ°ΠΊ ΠΈ Π²Π΅ΡΡ Π½Π°Ρ Π±ΡΠ΅Π½Π½ΡΠΉ ΠΌΠΈΡ: Π² Π°Π΄ΡΠ΅ΡΠ½ΠΎΠΌ ΠΎΠΊΠ½Π΅ ΡΠ΅ΡΠ²ΠΈΡΠ° Π½Π°Π΄ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π°Π΄ΡΠ΅Ρ ΡΠ°ΠΉΡΠ°, Ρ.Π΅. Π΅Π³ΠΎ URL ΠΈ Π·Π°ΡΠ΅ΠΌ Π½Π°ΠΆΠ°ΡΡ Β«CheckΒ». ΠΠΎΡΠ»Π΅ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡ Β«ΠΏΠΎΠΏΡΡ ΡΠΈΡΒ» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄ ΠΈ Π²ΡΠ΄Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΠΊΠΎΠ΄Π΅ ΡΡΡΠ°Π½ΠΈΡΡ Π½Π΅Ρ ΠΈ ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±ΡΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΡΠΏΠΎΠΊΠΎΠΉΠ½Ρ.
ΠΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈ ΡΠ°ΠΊΠΎΠΉ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ:
ΠΡΠΎ ΡΠΆΠ΅ ΠΏΠΎΡ ΡΠΆΠ΅ ΠΈ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌ ΠΊΠΎΠ΄Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ Π΅ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΡΠΌΠ΅ΡΡΠ΅Π»ΡΠ½ΠΎ: ΠΏΡΠΎΡΡΠΎ Π½Π°Π΄ΠΎ ΠΏΡΠΎΠΊΡΡΡΠΈΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Π½ΠΈΠΆΠ΅ ΠΈ ΡΠ°ΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Π±ΡΠ΄ΡΡ Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π²ΡΠ΅ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ, Π½ΠΎ ΠΈ ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ, Π½Π° ΠΊΠ°ΠΊΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° ΡΡΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ. Π’Π°ΠΊ ΡΡΠΎ Π΄ΠΎΠ»Π³ΠΎ ΠΈΡ ΠΈΡΠΊΠ°ΡΡ Π½Π΅ ΠΏΡΠΈΠ΄ΡΡΡΡ. ΠΠ΄Π΅ΡΡ, Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΡΠ΅ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΡΡΠ΄ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΡΡΠΎΡ Π²Π°Π»ΠΈΠ΄ΠΎΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ.
ΠΠΎ ΡΡΠΎ Π΅ΡΡ Π½Π΅ Π²ΡΡ: Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Π½ΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΊΠΎΠ΄Π°, Π½ΠΎ ΠΈ Π΄Π°ΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠ»Π½ΡΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΡΠ°Π½ΠΈΡΡ ΡΡΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ Π½Π°Π΄ΠΎ Π»Π΅Π½ΠΈΡΡΡΡ ΠΈ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π²ΡΡ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΡΠ°ΡΠΊΠΎΠ³ΠΎ ΠΈ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π°, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΠ°Π»ΠΈΠ΄Π°ΡΠΎΡ CSS Validation Service
Π ΠΎΠ±ΡΠ΅ΠΌ ΡΡΠΎ Π²ΡΠΎΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΡΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ°, Π½ΠΎ ΠΎΠ½Π° Β«Π·Π°ΡΠΎΡΠ΅Π½Π°Β» Π½Π΅ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠΎΠ΄Π° HTML ΠΈ XHTML, Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ΄Π° ΡΡΠΈΠ»Ρ CSS, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π½Π° Π²Π½Π΅ΡΠ½Π΅ΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅. Π ΡΡΠΎΠ±Ρ ΠΏΠΎΠΏΠ°ΡΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ ΡΠ΅ΡΠ²ΠΈΡΠ°, Π½Π°Π΄ΠΎ ΠΏΡΠΎΠΉΡΠΈ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ http://jigsaw.w3.org/css-validator.
ΠΡΡΠ°ΡΠΈ, Π·Π΄Π΅ΡΡ ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ Π½Π΅ΡΡΠΎ ΠΏΡΠΈΡΡΠ½ΠΎΠ΅: ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΡΠΎΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ΅ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½Π°. Π’Π°ΠΊ ΡΡΠΎ Π½Π΅ Π½Π°Π΄ΠΎ Π²ΡΡΠ°ΡΠΊΠΈΠ²Π°ΡΡ Π΄Π΅Π½ΡΠ³ΠΈ ΠΈΠ· ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΡΠ΅Π»ΡΠΊΠ° β ΠΏΡΡΡΡ ΠΎΠ½ΠΈ Π»Π΅ΠΆΠ°Ρ Π΄ΠΎ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ°. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ ΠΊ ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΠ΅ ΡΠ°Π±ΠΎΡΡ Π½Π° ΡΡΠΎΠΌ Π²ΡΠΎΡΠΎΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ΅.
Π ΠΎΠ±ΡΠ΅ΠΌ-ΡΠΎ Π²ΡΡ ΡΠ°Π±ΠΎΡΠ° Π½Π° Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡΠ΅ CSS Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ Π½Π° ΡΠΈΡΡΠΎΡΡ ΠΊΠΎΠ΄Π°. ΠΠΎΡΡΠΎΠΌΡ, ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡΠ° Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ. ΠΡΠΎΡΡΠΎ ΡΡΡΡ Π½ΠΈΠΆΠ΅ ΠΊΡΠ°ΡΠΊΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°ΠΌΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΈ Π²ΡΡ.
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°Π΄ΠΎ Π² Π°Π΄ΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π·Π°ΠΏΠΈΡΠ°ΡΡ URL ΡΠ°Π±Π»ΠΈΡΡ CSS, ΡΠΈΠΏΠ° Β«http://ΠΌΠΎΠΉ ΡΠ°ΠΉΡ/style.cssΒ» ΠΈ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΆΠ°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ Ρ ΡΡΡΡΠΊΠΎΠΉ Π½Π°Π΄ΠΏΠΈΡΡΡ Β«ΠΡΠΎΠ²Π΅ΡΠΈΡΡΒ». Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΡΡΠΎΡ Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡ ΡΠΎΠΆΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄ Β«ΠΏΠΎΠΏΡΡ ΡΠΈΡΒ» ΠΈ Π²ΡΠ΄Π°ΡΡ ΠΈΡΠΊΠΎΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΡΠ°Π±Π»ΠΈΡΠ° CSS Π½Π°ΠΏΠΈΡΠ°Π½Π° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π² Π½Π΅ΠΉ Π½Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΎ.
Π Π·Π΄Π΅ΡΡ ΡΠ°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΠΏΡΠΈΡΡΠ½Π°Ρ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΡΡΡ: Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠΊΡΡΡΠΈΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½ΠΈΠΆΠ΅, ΡΠΎ ΡΠ°ΠΌ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΠ°ΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΡ CSS, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ±ΡΠ°Π½Ρ Π²ΡΠ΅ Π»ΠΈΡΠ½ΠΈΠ΅ Π½Π°Π΄ΠΏΠΈΡΠΈ ΠΈ Π²ΡΠ΅ ΡΠ΅Π³ΠΈ ΠΊΠΎΠ΄Π° Π±ΡΠ΄ΡΡ ΡΠ°ΡΡΡΠ°Π²Π»Π΅Π½Ρ Π² ΡΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΡΠ°Π±ΠΎΡΠΈΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ Π²ΡΠ΅Ρ ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌ. ΠΡΡΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ°Π·Π΅Ρ ΠΊΠΎΠ΄Π° ΠΈ Π²ΡΡΠ°Π²ΠΈΡΡ Π΅Π³ΠΎ Π² ΡΠ°Π±Π»ΠΈΡΡ CSS.
ΠΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, ΡΡΠΎ ΡΠ»ΡΡΠΈΡΡΡΡ ΠΈ ΡΠ°ΠΊΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ:
ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Ρ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅ CSS, Π½ΠΎ ΠΏΡΠ³Π°ΡΡΡΡ ΡΡΠΎΠ³ΠΎ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΡΡΠΎΠΈΡ. Π‘ΡΠ°Π·Ρ Π²Π½ΠΈΠ·Ρ ΠΏΠΎΠ΄ ΡΡΠΎΠΉ ΠΊΡΠ°ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ, Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡ ΡΠΎΡΠ½ΠΎ ΡΠΊΠ°ΠΆΠ΅Ρ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠ΅Π³ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ. ΠΡΡΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΡΡΠΈΠ»Ρ Π½Π°ΠΉΡΠΈ ΡΡΠΈ ΡΠ΅Π³ΠΈ ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ Π½ΡΠΆΠ½ΡΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ.
Π ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π·Π°ΠΊΠ°ΡΠ°ΡΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΡΡΠΈΠ»Ρ Π½Π° Ρ ΠΎΡΡ ΠΈ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ Π·Π΅Π»ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΡΠ΄ΠΎΠ²ΠΎΠ»ΡΡΡΠ²ΠΈΠ΅ΠΌ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΡΠΈΠ»Ρ ΡΠ°Π±Π»ΠΈΡΡ CSS. ΠΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ Π·Π°ΡΠ΅ΠΌ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΡΡΠ°ΡΡΠΉ ΠΊΠΎΠ΄ Π½Π° Π½ΠΎΠ²ΡΠΉ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ.
ΠΡΠ°ΡΠΊΠΎΠ΅ ΡΠ΅Π·ΡΠΌΠ΅.
ΠΡΡΠ΅ Π±ΡΠ»ΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ Π΄Π²Π΅ ΡΠ°ΠΌΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΈ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ΡΠ°ΠΉΡΠ°. ΠΠ΅Π· ΡΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ Π΄Π°ΠΆΠ΅ Π½Π΅ ΡΡΠΎΠΈΡ ΠΎΡΠΊΡΡΠ²Π°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌ Π² robots.txt Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΡΠ°ΠΉΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ Π΄Π»Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΠΈ ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΠΌΠΈ ΠΌΠ°ΡΠΈΠ½Π°ΠΌΠΈ ΠΈ Π±ΡΠ΄Π΅Ρ ΡΡΠΈΡΠ°ΡΡΡΡ Π½Π΅ΠΈΡΠΏΡΠ°Π²Π½ΡΠΌ Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΡΠ°Π½ΠΊΡΠΈΡΠΌΠΈ.
Π§ΡΠΎΠ±Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ, Π½Π°Π΄ΠΎ Π·Π°ΡΡΠ°ΡΠΈΡΡ Π²ΡΠ΅Π³ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΈΠ½ΡΡ, ΡΡΠΎΠ±Ρ Π±ΡΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΡΠΏΠΎΠΊΠΎΠΉΠ½ΡΠΌ ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ²Π΅ΡΠ΅Π½Π½ΡΠΌ Π² ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠ°ΠΉΡΠ° ΠΈ Π²ΡΠ΅Ρ Π΅Π³ΠΎ ΡΡΡΠ°Π½ΠΈΡ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΅ΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΡΠ»ΠΎΠΊ ΠΈ Π°Π½ΠΊΠΎΡΠΎΠ², Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠ°ΠΉΡΠ° Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠ΄ΠΎΠ². Π’ΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π° ΡΠ°ΠΉΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ Π³ΠΎΡΠΎΠ²ΡΠΌ Π΄Π»Ρ Π΅Π³ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π΄Π»Ρ ΡΠ΄Π°ΡΠ½ΠΎΠ³ΠΎ ΠΈ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π² Π’ΠΠ.
ΠΠ°ΡΠ°Π½Π΅Π΅ Ρ ΠΎΡΠ΅ΡΡΡ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΡΠΎΡ ΠΎΠ΄ΡΡ ΡΠ°ΠΊΠΆΠ΅ Π±ΡΡΡΡΠΎ ΠΈ ΠΏΡΠΎΡΡΠΎ, ΠΊΠ°ΠΊ ΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΠ΅ Π²ΡΡΠ΅ β Π½Π°Π΄ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π±ΠΎΡΡ Ρ Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡΠΎΠΌ.
Π Π°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡΠΈ ΠΏΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ html ΠΊΠΎΠ΄Π°
Π Π΅ΡΠΈΠ» Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠ°ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ HTML ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ Π½Π° ΡΠ°ΠΉΡΠ°Ρ . ΠΠΎ Π²ΡΡΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ ΠΌΠ΅Π½Ρ ΠΈΡ Π±ΡΠ»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ)). Π‘Π°ΠΌΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΈΠ²Π°Π΅Ρ ΠΆΠ΅Π»ΡΡΠΌ ΡΠ²Π΅ΡΠΎΠΌ.
1) Error: Character reference was not terminated by a semicolon.
ΠΡΠΈΠ±ΠΊΠ°: ΡΠΈΠΌΠ²ΠΎΠ» Π½Π΅ Π±ΡΠ» ΠΏΡΠ΅ΡΠ²Π°Π½ ΡΠΎΡΠΊΠΎΠΉ Ρ Π·Π°ΠΏΡΡΠΎΠΉ β ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ.
2) Warning: Section lacks heading. Consider using h2-h6 elements to add identifying headings to all sections.
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: Π Π°Π·Π΄Π΅Π» Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°. Π Π°ΡΡΠΌΠΎΡΡΠΈΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² h2-h6 Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΡΡΠΈΡ
Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΊΠΎ Π²ΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π°ΠΌ. Π’ΡΡ Π²ΡΠ΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Ρ
ΠΎΡΡ Π±Ρ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ΄Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ. ΠΡΠΎ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΎΡΠΈΠ±ΠΊΠ°, Π° ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ.
3) Error: Element noindex not allowed as child of element p in this context.
ΠΡΠΈΠ±ΠΊΠ°: ΡΠ»Π΅ΠΌΠ΅Π½Ρ noindex Π½Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ ΠΊΠ°ΠΊ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° p Π² ΡΡΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅. (ΠΠΎΠ΄Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΡ
ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²Π°.)
Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΠΎΠ΅, Π½Π°Π΄ΠΎ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π³ Π½ΠΎΠΈΠ½Π΄Π΅ΠΊΡ, Π²ΠΈΠ΄ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΈΠΌ:
4) Error: The center element is obsolete.
ΠΡΠΈΠ±ΠΊΠ°: ΡΠ΅Π³ Β«centerΒ» ΡΡΡΠ°ΡΠ΅Π» β Π½Π°Π΄ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ, Π΅ΡΠ»ΠΈ ΡΠ΅ΡΡ ΠΏΡΠΎ img ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°ΡΡΠΈΠ±ΡΡ align. ΠΡΠ»ΠΈ ΡΡΠΎ-ΡΠΎ Π΄ΡΡΠ³ΠΎΠ΅ ΡΠ΅Π½ΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ, ΡΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π½Π° div.
5) An img element must have an alt attribute, except under certain
6) The width attribute on the td element is obsolete. Use CSS instead.
ΠΡΠΈΠ±ΠΊΠ°: ΠΡΡΠΈΠ±ΡΡ Β«widthΒ» Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅ Β«tdΒ» ΡΡΡΠ°ΡΠ΅Π»
7) The type attribute is unnecessary for javascript resources
ΠΡΠΈΠ±ΠΊΠ°: Π°ΡΡΠΈΠ±ΡΡ type Π½Π΅ Π½ΡΠΆΠ΅Π½ Π΄Π»Ρ ΡΠ΅ΡΡΡΡΠΎΠ² javascript. Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΠΎ ΡΠ΄Π°Π»ΡΠ΅ΠΌ Π²ΡΠ΅ Π»ΠΈΡΠ½Π΅Π΅ ΠΈ ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π³ Β«scriptΒ».
8) The align attribute on the img element is obsolete.
ΠΡΠΈΠ±ΠΊΠ°: ΠΡΡΠΈΠ±ΡΡ align Π΄Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° img ΡΡΡΠ°ΡΠ΅Π». Π‘Π΄Π΅Π»Π°ΠΉΡΠ΅ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π΄ΠΈΠ²Π°ΠΌΠΈ.
9) Document type does not allow element Β«liΒ» here; missing one of Β«ulΒ», Β«olΒ», Β«menuΒ», Β«dirΒ» start-tag
10) End tag for Β«divΒ» omitted, but OMITTAG NO was specified
ΠΡΠΈΠ±ΠΊΠ°: ΠΠ΅ Ρ Π²Π°ΡΠ°Π΅Ρ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΡΠ΅Π³Π° div. Π Π΅ΡΠ΅Π½ΠΈΠ΅ β Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½Ρ
11) End tag for element Β«divΒ» which is not open
ΠΡΠΈΠ±ΠΊΠ°: Π·Π°ΠΊΡΡΠ²Π°ΡΡΠΈΠΉ ΡΠ΅Π³ div Π»ΠΈΡΠ½ΠΈΠΉ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ΄Π°Π»ΡΠ΅ΠΌ.
ΠΠ΄Ρ Π²Π°ΡΠΈΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π², Π° Ρ Π²Π°Ρ Π½Π° ΡΠ°ΠΉΡΠ°Ρ Π²Π°Π»ΠΈΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄?
REST HTTP status codes for failed validation or invalid duplicate
I am building an application with a REST-based API and have come to the point where I am specifying status codes for each requests.
What status code should i send for requests failing validation or where a request is trying to add a duplicate in my database?
Is there a common practice when sending status codes?
9 Answers 9
For input validation failure: 400 Bad Request + your optional description. This is suggested in the book «RESTful Web Services». For double submit: 409 Conflict
Update June 2014
The relevant specification used to be RFC2616, which gave the use of 400 (Bad Request) rather narrowly as
The request could not be understood by the server due to malformed syntax
So it might have been argued that it was inappropriate for semantic errors. But not any more; since June 2014 the relevant standard RFC 7231, which supersedes the previous RFC2616, gives the use of 400 (Bad Request) more broadly as
the server cannot or will not process the request due to something that is perceived to be a client error
The 422 (Unprocessable Entity) status code means the server understands the content type of the request entity (hence a 415(Unsupported Media Type) status code is inappropriate), and the syntax of the request entity is correct (thus a 400 (Bad Request) status code is inappropriate) but was unable to process the contained instructions. For example, this error condition may occur if an XML request body contains well-formed (i.e., syntactically correct), but semantically erroneous, XML instructions.
200,300, 400, 500 are all very generic. If you want generic, 400 is OK.
422 is used by an increasing number of APIs, and is even used by Rails out of the box.
No matter which status code you pick for your API, someone will disagree. But I prefer 422 because I think of ‘400 + text status’ as too generic. Also, you aren’t taking advantage of a JSON-ready parser; in contrast, a 422 with a JSON response is very explicit, and a great deal of error information can be conveyed.
Speaking of JSON response, I tend to standardize on the Rails error response for this case, which is:
This format is perfect for form validation, which I consider the most complex case to support in terms of ‘error reporting richness’. If your error structure is this, it will likely handle all your error reporting needs.
I recommend using 422 UNPROCESSABLE ENTITY for validation errors.
I give a longer explanation of 4xx codes here.
Ugh. (309, 400, 403, 409, 415, 422). a lot of answers trying to guess, argue and standardize what is the best return code for a successful HTTP request but a failed REST call.
It is wrong to mix HTTP status codes and REST status codes.
However, I saw many implementations mixing them, and many developers may not agree with me.
HTTP return codes are related to the HTTP Request itself. A REST call is done using a Hypertext Transfer Protocol request and it works at a lower level than invoked REST method itself. REST is a concept/approach, and its output is a business/logical result, while HTTP result code is a transport one.
For example, returning «404 Not found» when you call /users/ is confuse, because it may mean:
«403 Forbidden/Access Denied» may mean:
And the list may continue with ‘500 Server error» (an Apache/Nginx HTTP thrown error or a business constraint error in REST) or other HTTP errors etc.
From the code, it’s hard to understand what was the failure reason, a HTTP (transport) failure or a REST (logical) failure.
If the HTTP request physically was performed successfully it should always return 200 code, regardless is the record(s) found or not. Because URI resource is found and was handled by the HTTP server. Yes, it may return an empty set. Is it possible to receive an empty web-page with 200 as HTTP result, right?
Instead of this you may return 200 HTTP code with some options:
Also, some internet providers may intercept your requests and return you a 404 HTTP code. This does not means that your data are not found, but it’s something wrong at transport level.
In July 2004, the UK telecom provider BT Group deployed the Cleanfeed content blocking system, which returns a 404 error to any request for content identified as potentially illegal by the Internet Watch Foundation. Other ISPs return a HTTP 403 «forbidden» error in the same circumstances. The practice of employing fake 404 errors as a means to conceal censorship has also been reported in Thailand and Tunisia. In Tunisia, where censorship was severe before the 2011 revolution, people became aware of the nature of the fake 404 errors and created an imaginary character named «Ammar 404» who represents «the invisible censor».
Why not simply answer with something like this?
Google always returns 200 as status code in their Geocoding API, even if the request logically fails: https://developers.google.com/maps/documentation/geocoding/intro#StatusCodes
Facebook always return 200 for successful HTTP requests, even if REST request fails: https://developers.facebook.com/docs/graph-api/using-graph-api/error-handling
It’s simple, HTTP status codes are for HTTP requests. REST API is Your, define Your status codes.
ΠΠ°Π»ΠΈΠ΄Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ Π² Spring Boot
ΠΠ΅ΡΠ΅Π΄ΠΊΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΏΡΡΠ°ΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π»ΠΈΠ±ΠΎ ΠΈΠ· Π·Π»ΠΎΠ³ΠΎ ΡΠΌΡΡΠ»Π°, Π»ΠΈΠ±ΠΎ ΠΏΠΎ ΠΎΡΠΈΠ±ΠΊΠ΅. ΠΠΎΡΡΠΎΠΌΡ ΡΡΠΎΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Π±ΠΈΠ·Π½Π΅Ρ-ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ.
ΠΡΡ Π·Π°Π΄Π°ΡΡ ΡΠ΅ΡΠ°Π΅Ρ Bean Validation. ΠΠ½ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½ ΡΠΎ Spring ΠΈ Spring Boot. Hibernate Validator ΡΡΠΈΡΠ°Π΅ΡΡΡ ΡΡΠ°Π»ΠΎΠ½Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Bean Validation.
ΠΡΠ½ΠΎΠ²Ρ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ Bean
ΠΠ»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π½Π°Π΄ ΠΏΠΎΠ»ΡΠΌΠΈ ΠΊΠ»Π°ΡΡΠ°. ΠΡΠΎ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ Π·Π°Π³ΡΡΠ·Π½ΡΠ΅Ρ ΠΊΠΎΠ΄.
ΠΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ° Π² Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡ, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ°
ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π² ΠΏΡΠΎΠ΅ΠΊΡ:
ΠΠ°Π»ΠΈΠ΄Π°ΡΠΈΡ Π² Spring MVC Controller
Π‘Π½Π°ΡΠ°Π»Π° Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π² ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ. Π£ Π²Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ HTTP-Π·Π°ΠΏΡΠΎΡΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅.
ΠΠ°Π»ΠΈΠ΄Π°ΡΠΈΡ ΡΠ΅Π»Π° Π·Π°ΠΏΡΠΎΡΠ°
Π’Π΅Π»ΠΎ Π·Π°ΠΏΡΠΎΡΠ° POST ΠΈ PUT ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ JSON. Spring Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²Ρ ΠΎΠ΄ΡΡΠΈΠΉ JSON Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ Java.
ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π»ΠΈ Π²Ρ ΠΎΠ΄ΡΡΠΈΠΉ Java ΠΎΠ±ΡΠ΅ΠΊΡ Π½Π°ΡΠΈΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ.
ΠΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ REST ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Input ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ:
ΠΡΠ»ΠΈ ΠΊΠ»Π°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠΎΠ»Π΅ Ρ Π΄ΡΡΠ³ΠΈΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ β ΡΡΠΎ ΠΏΠΎΠ»Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΌΠ΅ΡΠΈΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ Valid.
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ MethodArgumentNotValidException Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡΠ΅ΠΊΡ Π½Π΅ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Spring ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Ρ ΡΡΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π² HTTP ΡΡΠ°ΡΡΡ 400.
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΡΡΠΈ ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π·Π°ΠΏΡΠΎΡΠ°
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΡΡΠΈ ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π·Π°ΠΏΡΠΎΡΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎ-Π΄ΡΡΠ³ΠΎΠΌΡ.
ΠΠΌΠ΅ΡΡΠΎ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ»Ρ ΠΊΠ»Π°ΡΡΠ°, ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ΅, Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ @Min ) Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° Π² ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅ Spring:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ @Validated Spring Π² ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΠ»Π°ΡΡΠ°, ΡΡΠΎΠ±Ρ ΡΠΊΠ°Π·Π°ΡΡ Spring ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ ΠΌΠ΅ΡΠΎΠ΄Π°.
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Validated ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΠ»Π°ΡΡΠ°, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ½Π° ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π°Ρ .
ΠΠ΅ΡΠ½Π΅ΠΌ HTTP ΡΡΠ°ΡΡΡ 400, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠ» Π½Π΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ½ΡΠΎΠ»Π»Π΅Ρ:
ΠΠΎΠ·ΠΆΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π²Π΅ΡΠ½ΡΡΡ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΡΠ²Π΅Ρ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΎΠ±ΠΎ Π²ΡΠ΅Ρ Π½Π΅ΡΠ΄Π°ΡΠ½ΡΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ.
ΠΠ°Π»ΠΈΠ΄Π°ΡΠΈΡ Π² ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΌ ΡΠ»ΠΎΠ΅
ΠΠ½Π½ΠΎΡΠ°ΡΠΈΡ @Validated ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΠ»Π°ΡΡΠ°, ΡΠ°ΠΊ ΡΡΠΎ Π½Π΅ ΡΡΠ°Π²ΡΡΠ΅ Π΅Π΅ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅.
ΠΠ°Π»ΠΈΠ΄Π°ΡΠΈΡ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ JPA
Persistence Layer ΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π»ΠΈΠ½ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ . ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Spring Data ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Hibernate, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Bean Validation ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ.
ΠΠ±ΡΡΠ½ΠΎ ΠΌΡ Π½Π΅ Ρ ΠΎΡΠΈΠΌ Π΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΠ°ΠΊ ΠΏΠΎΠ·Π΄Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π±ΠΈΠ·Π½Π΅Ρ-ΠΊΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°Π» Ρ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ Π½Π΅Π²Π°Π»ΠΈΠ΄Π½ΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΠΏΡΠ΅Π΄Π²ΠΈΠ΄Π΅Π½Π½ΡΠΌ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ.
Bean Validation Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Hibernate ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ EntityManager Π²ΡΠ·ΠΎΠ²Π΅Ρ flush.
ΠΠ°Π»ΠΈΠ΄Π°ΡΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Spring Boot Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @ConfigurationProperties ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² ΠΈΠ· application.properties Ρ Java ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ.
ΠΠ°Π½Π½ΡΠ΅ ΠΈΠ· application Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ Π΄Π»Ρ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Bean Validation ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΡ Π² ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠΎΠΏΡΡΡΠΈΠΌ ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ:
ΠΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ Π·Π°ΠΏΡΡΠΊΠ° Ρ Π½Π΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ Π°Π΄ΡΠ΅ΡΠΎΠΌ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΡΠΈΠ±ΠΊΡ:
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ
ΠΠ°ΠΆΠ΄Π°Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠΎΠ»Ρ:
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ.
@NotNull ΠΈ @Null
@NotNull β Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ null. ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π»ΡΠ±ΠΎΠΉ ΡΠΈΠΏ.
@Null β Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ null. ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π»ΡΠ±ΠΎΠΉ ΡΠΈΠΏ.
@NotBlank ΠΈ @NotEmpty
@NotBlank ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΡΡΡΠΎΠΊΠ°ΠΌ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΡΡΠΎ ΡΡΡΠΎΠΊΠ° Π½Π΅ ΠΏΡΡΡΠ° ΠΈ Π½Π΅ ΡΠΎΡΡΠΎΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ².
ΠΠ½Π½ΠΎΡΠ°ΡΠΈΡ @Size(min=6) ΠΏΡΠΎΠΏΡΡΡΠΈΡ ΡΡΡΠΎΠΊΡ ΡΠΎΡΡΠΎΡΡΡΡ ΠΈΠ· 6 ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ² ΠΈ/ΠΈΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° ΡΡΡΠΎΠΊΠΈ, Π° @NotBlank Π½Π΅ ΠΏΡΠΎΠΏΡΡΡΠΈΡ.
Π Π°Π·ΠΌΠ΅Ρ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌΠΈ Π³ΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠ°ΠΌΠΈ Π³ΡΠ°Π½ΠΈΡΡ. null ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΡΠΈΡΠ°ΡΡΡΡ Π²Π°Π»ΠΈΠ΄Π½ΡΠΌΠΈ.
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡΠ°
ΠΡΠ»ΠΈ ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΡΠΎ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΠ΅.
Π ΠΊΠ»Π°ΡΡΠ΅ Input ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΎΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΡΡΠΎΠΊΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ IP Π°Π΄ΡΠ΅ΡΠΎΠΌ. Π Π΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½ΡΠΌ: ΠΎΠ½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠΊΠ΅ΡΡ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ Π±ΠΎΠ»ΡΡΠ΅ 255, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ «111.111.111.333» Π±ΡΠ΄Π΅Ρ ΡΡΠΈΡΠ°ΡΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π½Π° Java. ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΊΠ°ΠΊ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡ, Π΄ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Ρ Π²Π°Ρ Π±ΡΠ»Π° ΠΎΠ΄Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π° ΡΠ΅ΠΏΠ΅ΡΡ ΡΡΠ°Π»ΠΎ Π΄Π²e π
Π‘Π½Π°ΡΠ°Π»Π° ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @IpAddress :
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡΠ° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ
ΠΠ»Ρ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Spring Boot, ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡ Π²ΡΡΡΠ½ΡΡ.
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Spring Boot ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡΠ°. ΠΠ½Π΅Π΄ΡΠΈΠ² ΡΡΠΎΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π² ΡΠ΅ΡΠ²ΠΈΡ Π½Π΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΅Π³ΠΎ Π²ΡΡΡΠ½ΡΡ.
ΠΠΎΠ³Π΄Π° ΡΡΠΎΡ ΡΠ΅ΡΠ²ΠΈΡ Π²Π½Π΅Π΄ΡΡΠ΅ΡΡΡ Spring, Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡΠ°.
ΠΡΡΠΏΠΏΡ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΉ
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΡΠ°ΡΡΠ²ΡΡΡ Π² ΡΠ°Π·Π½ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
ΠΠΎΠ·ΡΠΌΠ΅ΠΌ ΡΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ CRUD: ΠΏΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΊΠ»Π°ΡΡ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΏΡΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ²Π°Ρ :
Π€ΡΠ½ΠΊΡΠΈΡ Bean Validation, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ Π²Π½Π΅Π΄ΡΡΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ «Validation Groups».
ΠΠ»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° CRUD ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ Π΄Π²Π° ΠΌΠ°ΡΠΊΠ΅ΡΠ½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° OnCreate ΠΈ OnUpdate :
ΠΠ°ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Ρ Π»ΡΠ±ΠΎΠΉ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ:
ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ id ΠΏΡΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ ΠΏΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ.
Spring ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π³ΡΡΠΏΠΏΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΎΠ»ΡΠΊΠΎ Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @Validated
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Validated ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ»Π°ΡΡΡ. Π§ΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊΠ°Ρ Π³ΡΡΠΏΠΏΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π°ΠΊΡΠΈΠ²Π½Π°, ΠΎΠ½Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΌΠ΅ΡΠΎΠ΄Π°.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π³ΡΡΠΏΠΏ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ Π»Π΅Π³ΠΊΠΎ ΡΡΠ°ΡΡ Π°Π½ΡΠΈ-ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠΌ. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π³ΡΡΠΏΠΏ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ΡΡΡΠ½ΠΎΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π½Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π° Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠ»ΡΡΠ°Π΅Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ (Π³ΡΡΠΏΠΏ), Π² ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ.
ΠΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΠ½ΡΡ ΠΎΡΠ²Π΅ΡΠΎΠ² Π½Π° ΠΎΡΠΈΠ±ΠΊΠΈ
ΠΠΎΠ³Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π΅ ΡΠ΄Π°Π΅ΡΡΡ, Π»ΡΡΡΠ΅ Π²Π΅ΡΠ½ΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΏΠΎΠ½ΡΡΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²Π΅ΡΠ½ΡΡΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ ΠΏΡΠΎΡΠ»Π° Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ.
Π‘Π½Π°ΡΠ°Π»Π° Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ . ΠΠ°Π·ΠΎΠ²Π΅ΠΌ Π΅Π΅ ValidationErrorResponse ΠΈ ΠΎΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΏΠΈΡΠΎΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Violation :