π ΠΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ API-ΠΊΠ»ΠΈΠ΅Π½Ρ Π½Π° Typescript
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ API-ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π½Π° ΡΠ·ΡΠΊΠ΅ TypeScript Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΊΠ°ΠΊ ΡΠΎ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌΠΈ API, ΡΠ°ΠΊ ΠΈ ΡΠΎ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ. ΠΠ»ΠΈΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΈ Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΠΌΠΈ ΡΠ½Π΄ΠΏΠΎΠΉΠ½ΡΠ°ΠΌΠΈ ΠΈ Π½Π΅ ΠΏΡΠΈΠ²ΡΠ·Π°Π½ ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΡ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ ΠΏΡΠΈΠ³ΠΎΠ΄Π½ΡΠΌ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² React, Vue, Svelte ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°Ρ .
Π‘ΠΎΠ·Π΄Π°Π²Π°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ ToDo-Π»ΠΈΡΡΠ°, ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π½Π°ΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΠΊΠ°ΠΊΠΈΠΌΠΈ-ΡΠΎ Π΄Π°Π½Π½ΡΠΌΠΈ, Ρ ΡΠ°Π½ΡΡΠΈΠΌΠΈΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅. ΠΡΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ³Π½ΠΎΠ·Ρ ΠΏΠΎΠ³ΠΎΠ΄Ρ, ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΠ΅ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌ API, ΡΠ°ΠΊ ΠΈ Π΄Π°Π½Π½ΡΠ΅ Π½Π°ΡΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², Π±ΡΠ΄Ρ ΡΠΎ ΠΈΡ Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ ΠΈΠ»ΠΈ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠΊΡΠΏΠΎΠΊ Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅. Π Π°Π±ΠΎΡΠ°Ρ Ρ SPA (Single Page Application) ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΠΈ ΡΠ°ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΡ, ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π½ΡΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ ΠΊΠ°ΠΊΡΡ-ΡΠΎ ΠΏΡΠΎΡΠ»ΠΎΠΉΠΊΡ, ΠΎΡΠ²Π΅ΡΠ°ΡΡΡΡ Π·Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ API-ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ React, Ρ ΠΎΡΡ Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ΅Π»ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π½Π° ΡΠΎΠΌ ΠΆΠ΅ Vue, Svelte ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
ΠΠΎΡΠ΅ΠΌΡ Π½Π΅ ΠΏΡΠΎΠΏΠΈΡΠ°ΡΡ Π²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ , Π³Π΄Π΅ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ?
ΠΡΠ΅ ΠΏΡΠΎΡΡΠΎ: Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΏΠΎΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ API, Ρ ΠΊΠΎΡΠΎΡΡΠΌ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΡΠΎΠΉΡΠΈΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠ΄Ρ ΠΈ Π½Π°ΠΉΡΠΈ Π²ΡΠ΅ ΡΠΎΡΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΎ Π·Π°ΡΡΠΎΠ½ΡΠ»ΠΎ. ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π²ΡΠ½Π΅ΡΡΠΈ ΡΡΡ Π»ΠΎΠ³ΠΈΠΊΡ Π² React-Ρ ΡΠΊΠΈ, ΡΠ°Π· ΡΠΆ ΡΠ΅ΠΉΡΠ°Ρ ΡΠ΅ΡΡ ΠΎ Π½Π΅ΠΌ, Π½ΠΎ ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ c Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°ΠΌΠΈ.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Typescript
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π²ΡΠ½Π΅ΡΠ΅ΠΌ Π΄ΠΎΠΌΠ΅Π½Ρ, Π³Π΄Π΅ Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ API, Π² ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ΄Π° ΠΊΠΎΠ½ΡΠΈΠ³, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ Ρ .env
-ΡΠ°ΠΉΠ»ΠΎΠΌ:
ΠΠ°ΡΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠ°ΠΌ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ, Π½Π΅ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΡΠΉ ΠΊ Π΄Π°Π½Π½ΠΎΠΌΡ Π΄ΠΎΠΌΠ΅Π½Ρ. ΠΠ»Ρ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΡΡΠ΅Π±ΡΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ axios ΠΈ axios-extensions.
ΠΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°:
Π ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΡΠΈΠΏΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Headers
, ΠΊΠΎΡΠΎΡΡΠΉ, ΠΏΠΎ ΡΡΡΠΈ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΠΎ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΌ [key: string]: string, ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠ»Π΅Π΄ΡΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ Error
(Unauthorized, Forbidden, HttpError), ΡΡΠΎΠ±Ρ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ Π±ΡΠ»ΠΎ ΠΏΡΠΎΡΠ΅ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΏΠΎΡΠ»ΡΠΆΠΈΠ»ΠΎ ΠΈΡ
ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ.
Π£ ΠΊΠ»Π°ΡΡΠ° Π²ΡΠ΅Π³ΠΎ ΡΡΠΈ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ
ΠΌΠ΅ΡΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡ axios-ΠΊΠ»ΠΈΠ΅Π½Ρ. ΠΡΠΎΡ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΠ°ΠΌΠΈ API, ΡΠ°ΠΊ ΠΈ Ρ Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΠΌΠΈ, ΠΏΡΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Ρ Bearer-ΡΠΎΠΊΠ΅Π½ΠΎΠΌ. ΠΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΡΠΎΡ ΡΠ°ΠΌΡΠΉ ΡΠΎΠΊΠ΅Π½, Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΎ ΠΏΠΎΠ·ΠΆΠ΅. ΠΠ°ΠΊ get-, ΡΠ°ΠΊ ΠΈ post-ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ abortSignal
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠ΅ΡΠ²Π°ΡΡ ΠΎΡΠΏΡΠ°Π²ΠΊΡ Π·Π°ΠΏΡΠΎΡΠ° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
Π ΡΠ»ΡΡΠ°Π΅ Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΎΠΉ ΠΊΠ°ΠΊΠΈΡ
-Π»ΠΈΠ±ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π° ΡΠ΅ΡΠ²Π΅Ρ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ uploadFile()
, ΠΎΡΠΏΡΠ°Π²Π»ΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Π·Π°ΠΏΡΠΎΡ Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ Content-Type: multipart/form-data.
ΠΠ»Ρ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΠΈ Π»ΠΎΠ³ΠΈΠΊΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠ°Π±ΡΠΈΠΊΡ.
ΠΠΎΠ΄ ΡΠ°Π±ΡΠΈΠΊΠΈ:
ΠΠΈΡΠ΅Π³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ ΠΎΠ½Π° Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ: ΠΏΡΠΎΡΡΠΎ ΡΠΎΠ·Π΄Π°Π΅Ρ Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ, Π»ΠΈΠ±ΠΎ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΡΠΎΠΊΠ΅Π½.
ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠ½Π΄ΠΏΠΎΠΈΠ½Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ, ΠΏΠΎΠ»ΡΡΠ°ΡΡΠΈΠΉ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΏΡΠΎΡΠΈΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ:
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½Π°ΠΌ Π½Π΅ Π²Π°ΠΆΠ½Π° ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄Π»Ρ ΠΏΡΠΎΡΠΈΠ»Ρ. ΠΡΠ΄Π΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΡΡΠΈΡΠ°ΡΡ, ΡΡΠΎ ΠΎΠ½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠ° Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠΌ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ.
Π‘Π°ΠΌ ΠΊΠ»Π°ΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΈ Ρ ΡΠ°Π½ΠΈΡ Π² ΡΠ²ΠΎΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π°Π΄ΡΠ΅ΡΠΎΠ²ΡΠ²Π°ΡΡ Π²ΡΠ΅ API-Π·Π°ΠΏΡΠΎΡΡ ΠΊ Π½Π΅ΠΌΡ, Π° Π΅ΡΠ»ΠΈ Π½Π°Π΄ΠΎ, ΠΎΠ½ ΡΠΌΠΎΠΆΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠ°ΠΊΡΡ-ΡΠΎ ΡΠ²ΠΎΡ Π»ΠΎΠ³ΠΈΠΊΡ ΠΊ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ, ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ²ΠΎΠΉ ΡΠ½Π΄ΠΏΠΎΠΈΠ½Ρ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅).
Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ, API Π³ΡΡΠΏΠΏΠΈΡΡΡΡ Π΄ΠΎΠΌΠ΅Π½Π½ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ, Π΄ΠΎΠ±Π°Π²Π»ΡΡ ΠΊ ΡΠ²ΠΎΠΈΠΌ ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΠ°ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΏΡΠ΅ΡΠΈΠΊΡ. Π’Π°ΠΊΠΆΠ΅ Π±ΡΠ²Π°ΡΡ ΡΠ»ΡΡΠ°ΠΈ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ API Ρ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π½Π° Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΡΡ. Π§ΡΠΎΠ±Ρ Π²ΡΠ΅ ΡΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅ΡΡ, ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ°Π±ΡΠΈΠΊΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ°.
ΠΠΎΠ΄ ΡΠ°Π±ΡΠΈΠΊΠΈ:
ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΡΠΎΠΉ ΡΠ°Π±ΡΠΈΠΊΠΈ, Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ URL Π΄ΠΎΠΌΠ΅Π½Π° ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠ°. ΠΠ°ΡΠ΅ΠΌ ΡΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΡΠ°Π±ΡΠΈΠΊΠΈ API ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², Π΄ΠΎΠΏΠΈΡΡΠ²Π°Ρ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ URL Π²Π΅ΡΡΠΈΡ API ΠΈ ΡΠΎΡ ΡΠ°ΠΌΡΠΉ ΠΏΡΠ΅ΡΠΈΠΊΡ, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡΠΈΠΉ ΡΠ°ΡΡΡ Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ. ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΠΏΡΠΎΡΠΈΠ»Π΅ΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ, ΡΠ°ΠΊ ΡΡΠΎ Π² ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΠΎΠΊΠ΅Π½, Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ.
Dependency injection
Π’Π΅ΠΏΠ΅ΡΡ ΠΎΡΡΠ°Π»ΠΎΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π·Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΠΏΡΠΎΡΠΈΠ»Π΅ΠΉ Π² Π»ΡΠ±ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π°, Π±ΡΠ΄Ρ ΡΠΎ React-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈΠ»ΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ Typescript-ΠΊΠ»Π°ΡΡ. ΠΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
ΠΠ½Π°ΡΠ°Π»Π΅ Π²Π½ΡΡΡΠΈ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠ°Π±ΡΠΈΠΊΠ° ΡΡΠΈΡ ΡΠ°ΠΌΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠ², Π² ΠΊΠΎΡΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π΄ΠΎΠΌΠ΅Π½ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ Π±Π°Π·ΠΎΠ²ΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠ³Π»ΡΠ΄ΡΡ ΡΠ°ΠΊ:
ΠΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° Π»ΡΠ±ΡΠ΅ ΡΠ²ΠΎΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ.
Π‘ΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ API-ΡΠΎΠΊΠ΅Π½Π° ΠΈ ΡΠ°Π±ΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ getAuthToken()
Ρ Π½Π΅ Π±ΡΠ΄Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠ° ΡΠ΅ΠΌΠ° Π·Π°ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ .
ΠΡΠΈΠΌΠ΅Ρ ΡΠ°Π±ΠΎΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΠΏΡΠΎΡΠΈΠ»Π΅ΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π½ΠΈΠΆΠ΅:
ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² Ρ
ΡΠΊΠ΅ useEffect
, Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΏΡΠΎΡΠΈΠ»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΡΠ΅ΠΌ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΏΡΠΎΡΠΈΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Redux, ΡΡΠΎΠ±Ρ Π·Π°ΡΠ΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΡΠΈΠΌ ΠΏΡΠΎΡΠΈΠ»Π΅ΠΌ, Π½Π΅ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· Π΅Π³ΠΎ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°. Π ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠ°Π±ΠΎΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ handleError()
, ΠΊΠΎΡΠΎΡΠ°Ρ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ΄Π° ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΎ ΡΠ΅ΠΌ Ρ Π³ΠΎΠ²ΠΎΡΠΈΠ» ΡΠ°Π½Π΅Π΅, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ΅ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.
ΠΡΠΎΠ³ΠΈ
ΠΠ°Π½Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠ° ΠΎΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°, Ρ ΠΊΠΎΡΠΎΡΡΠΌ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅, Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π°ΠΆΠ΅ Π½Π° Π½Π°ΡΠΈΠ²Π½ΠΎΠΌ JS (TS). Π Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΎ Π΄ΠΎΡΠ°Π±ΠΎΡΠ°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠ°ΡΡΠ΅ΡΠ½ Β«βΠ‘ΡΡΠΎΠΈΡΠ΅Π»ΡΒ» Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ API-ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π² Π½Π΅Π³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², abortSignal-ΠΎΠ² ΠΈ ΠΏΡΠΎΡΠ΅Π³ΠΎ, ΠΈΠ»ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ Π²Π°ΡΠΈΠ°ΡΠΈΠ²Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ΅Π· JWT-ΡΠΎΠΊΠ΅Π½. ΠΡΠ΅ Π½Π° Π²Π°ΡΠ΅ ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠ΅). Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅ ΡΠ°ΡΡΠΊΠ°ΠΆΡ Π²Π°ΠΌ ΠΏΡΠΎ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ ΡΠ°Π±ΠΎΡΡ Ρ API-ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅.