REST API (Representational State Transfer β ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ) β ΡΡΠΎ ΡΡΠΈΠ»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌΠΈ. ΠΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΈΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π°.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ API ΠΈ REST?
API (Application Programming Interface β ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ) β ΡΡΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ. REST, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΡΠΈΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠ±ΡΠ°ΡΡΡΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ .
REST ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ΅ΡΡΡΡΡ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, HTML-ΡΡΡΠ°Π½ΠΈΡΡ, Π°ΡΠ΄ΠΈΠΎ ΠΈΠ»ΠΈ Π²ΠΈΠ΄Π΅ΠΎ. ΠΠ»ΠΈΠ΅Π½ΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΡΠΈΠΌ ΡΠ΅ΡΡΡΡΠ°ΠΌ ΡΠ΅ΡΠ΅Π· ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠ°Ρ JSON, XML, HTML ΠΈ Π΄ΡΡΠ³ΠΈΡ .
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ REST API
1. ΠΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ-ΡΠ΅ΡΠ²Π΅Ρ
ΠΠ΅ΡΠ²ΡΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ² ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΡΠΎ ΡΠ»ΡΡΡΠ°Π΅Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ ΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ.
2. ΠΠ΅Π· ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ (stateless)
REST API Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π±Π΅Π· ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅. ΠΠ°ΠΆΠ΄ΡΠΉ Π·Π°ΠΏΡΠΎΡ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π²ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠ°. ΠΡΠΎ ΡΠ»ΡΡΡΠ°Π΅Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ Π»Π΅Π³ΠΊΠΎ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠ°ΡΡΠΈΡΠ½ΡΡ ΡΠ±ΠΎΠ΅Π².
3. ΠΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠ»Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΡΠ΅ΡΠΈ ΠΈ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ Π·Π°Π΄Π΅ΡΠΆΠ΅ΠΊ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΌΠΎΠ³ΡΡ ΠΊΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ². ΠΡΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ²Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΊΠ°ΠΊ ΠΊΡΡΠΈΡΡΠ΅ΠΌΡΡ Π² ΠΎΡΠ²Π΅ΡΠ°Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΡΠ½ΠΈΠΆΠ°Π΅Ρ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ ΠΈ ΡΠ»ΡΡΡΠ°Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ.
4. Π£Π½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ
ΠΡΠΎΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± Π΄Π»Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΈΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΠ΅Π· URI, Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΡ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ β Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ HTTP ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ GET, POST, PUT, DELETE.
5. ΠΠΈΠΏΠ΅ΡΠΌΠ΅Π΄ΠΈΠ° ΠΊΠ°ΠΊ Π΄Π²ΠΈΠΆΡΡΠ°Ρ ΡΠΈΠ»Π° ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (HATEOAS)
ΠΡΠΎΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΠΎΡΠ²Π΅ΡΡ API Π³ΠΈΠΏΠ΅ΡΠΌΠ΅Π΄ΠΈΠ°-ΡΡΡΠ»ΠΊΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ Π½Π°Π²ΠΈΠ³ΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΏΠΎ ΡΠ΅ΡΡΡΡΠ°ΠΌ Π±Π΅Π· Π·Π½Π°Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡΡ URI. ΠΡΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΠΊ ΡΠ΅ΡΡΡΡΠ°ΠΌ ΠΈ ΡΠ»ΡΡΡΠ°Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΡΡΡΡΠΊΡΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡΡΡΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ REST API
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π²ΠΌΠ΅ΡΡΠΎ Π³Π»Π°Π³ΠΎΠ»ΠΎΠ² Π² ΠΏΡΡΡΡ ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΠΎΠ².
- ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ°Ρ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡΡ ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΠΎΠ² Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡΡ API.
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΡΠ΅ΡΡΡΡΠΎΠ² Π΄Π»Ρ ΡΠΎΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, /articles/12).
- ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ.
- Π€ΠΈΠ»ΡΡΡΠ°ΡΠΈΡ, ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΈ ΠΏΠ°Π³ΠΈΠ½Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ ΠΈ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
- ΠΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΡΠ΅ΡΠ²Π΅ΡΠ°.
- ΠΠ΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ API Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΡΠ°ΡΡΡ ΠΈ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
REST API ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠΎΡΠ½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΡ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΡ Π²Π΅Π±-ΡΠ΅ΡΠ²ΠΈΡΠΎΠ². Π‘Π»Π΅Π΄ΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°ΠΌ ΠΈ Π»ΡΡΡΠΈΠΌ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°ΠΌ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½Π°Π΄Π΅ΠΆΠ½ΡΠ΅ ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ API, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ°ΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ.
Raman Sapezhka
CEO Plantago/CTO