Axios ΠΎΡΠΊΠ»ΠΎΠ½ΡΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΡ Ρ ΡΠΈΠΏΠΎΠΌ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ»ΠΈΡΠΈΡΡ Π°ΠΊΡΠΈΠΎΠΌΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΅ΠΉΡΠ°Ρ β ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΏΠΎΠ»Ρ Β«Π·Π°ΠΏΡΠΎΡΒ», ΡΡΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠΠ°Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΡΠΈΠΏ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΡΠΎ ΠΏΠΎΠ»Π΅.
const { axios, AxiosError } = require('axios');
...
try {
...
const response = await axios.get(url);
...
} catch (error) {
if(error instanceof AxiosError) {
return processAxiosError(error);
}
throw error;
}
ΠΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ: #24
ΠΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, Π½ΠΎ ΡΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΡΠ΅ΡΡΠ΅Π·Π½ΡΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ.
AxiosError Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡΡΡ ΠΎΡ Error. ΠΡΠΎ Π½Π΅ Π½Π°ΡΡΡΠΈΠ»ΠΎ Π±Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
ΠΡΠ»ΠΎ Π±Ρ, Π΅ΡΠ»ΠΈ ΠΊΡΠΎ-ΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ error.constructor.name === 'Error'
Π― ΡΠΎΠ³Π»Π°ΡΠ΅Π½, Π½ΠΎ ΡΡΠΎ Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅. ΠΠΎΠΆΠ΅ΠΌ Π»ΠΈ ΠΌΡ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΡΠΈΠΌ ΡΠ°Π΄ΠΈ Π»ΡΡΡΠ΅Π³ΠΎ API?
Π― Π·Π° ΡΡΠΎ, Π½ΠΎ Π»ΠΈΡΠ½ΠΎ Ρ Π±Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠ΅Π», Π΅ΡΠ»ΠΈ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠΈΠ΅, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΠΎΠ³Π»Π°ΡΡΡΡΡ, ΡΡΠΎΠ±Ρ ΠΌΡ Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΠΈ axios Π½Π° semver, v1.0.0.
Axios, Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ, ΠΊΠ°ΠΆΠ΅ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΌ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ, Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ semver-major ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠΎΠ»ΠΎΠΌΠΊΡ.
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΡΡΠΈΡΡΠ²Π°Ρ ΡΠΈΡΠΎΠΊΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ axios ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΡΡ HTTP-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ React ΠΈ Vue.js, ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ΅ΡΡΠ΅Π·Π½ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ.
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, ΡΠ΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΠ», axios ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π°Π΄ Π²Π΅ΡΠΊΠΎΠΉ v1.0.0, Ρ ΠΌΠΎΠ³ Π±Ρ ΠΎΡΠΊΡΡΡΡ PR Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ΅Π³ΠΎΠ΄Π½Ρ.
@mzabriskie, @nickuraltsev
@ΠΠΆΠ°ΡΡΠΈΠ½ΠΠ΅ΠΊΠ²ΠΈΡ
/cc @Khaledgarbaya @axe312ger @zcei
Π, Π΄Π°, ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ Π±Ρ. Π’Π°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² Π½Π°ΡΠ΅ΠΌ SDK.
ΠΠΎΠΆΠ΅ΠΌ Π»ΠΈ ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠΎ Π² #1333 @Khaledgarbaya?
PR ΡΠΆΠ΅ Π΅ΡΡΡ, Ρ Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΌΡΠ³ΠΊΠΎΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π»Ρ Π²Π΅ΡΡΠΈΠΉ 0.x Π² Π²ΠΈΠ΄Π΅ ΡΠ»Π°Π³Π° Π² #1419 ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° ΠΎΡΠΈΠ±ΠΊΠΈ Π΄Π»Ρ 1.x Π² #1420, ΡΠΌ. ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ PR
@axe312ger @Khaledgarbaya Π΅ΡΡΡ Π½ΠΎΠ²ΠΎΡΡΠΈ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΏΠΎΠ²ΠΎΠ΄Ρ?
@ axe312ger ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°?
ΠΡΠΈΠ΄Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ @Khaledgarbaya π
ΠΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ. Π‘Π΅ΠΉΡΠ°Ρ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ!
ΠΡΡΡ Π»ΠΈ ΠΏΡΠΎΠ³ΡΠ΅ΡΡ Π² ΡΡΠΎΠΌ Π²ΠΎΠΏΡΠΎΡΠ΅? ΠΠΎΠ»Π΅Π·Π½ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ axios ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ. Π Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π°Π³Π° isAxiosError ΠΊ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ, Π²ΡΠ΄Π°Π²Π°Π΅ΠΌΡΠΌ axios https://github.com/axios/axios/pull/1419 , ΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΎΡΠΎΡΠΈΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π±Π΅Π· Π½Π°ΡΡΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π Π°ΡΡΠΌΠΎΡΡΠΈΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΠ»Π°Π³Π° Π² Π²Π΅ΡΡΠΈΡ ΠΏΠ°ΡΡΠ°, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°?
+1
@Khaledgarbaya ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΏΠΎΠ²ΠΎΠ΄Ρ?
ΠΠ½Π΅ Π²ΡΠ΅ Π΅ΡΠ΅ Π½ΡΠ°Π²ΠΈΡΡΡ ΡΡΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Ρ Π²ΡΠ΅Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ°, Π½Π΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΠ΅ΡΡ Π²Π½ΠΎΡΠΈΡΡ ΡΠ²ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ PR
@axe312ger Π£ Π½Π°Ρ ΡΠΆΠ΅ 2 PR Π·Π° 5 ΠΌΠ΅ΡΡΡΠ΅Π²!
Π£ΠΏΡ. Π’ΡΡΠ΄Π½ΠΎ ΡΠ»Π΅Π΄ΠΈΡΡ Π·Π° ΡΡΠΈΠΌ ΡΠ΅ΠΏΠΎ.
Π― Π±Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠ΅Π», ΡΡΠΎΠ±Ρ https://github.com/axios/axios/pull/1419 ΠΎΠΊΠ°Π·Π°Π»ΡΡ Π² master, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π½ΠΈΠ΅ v1 Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π·Π°ΠΌΠΎΡΠΎΠΆΠ΅Π½ΠΎ ΠΈΠ·-Π·Π° Π½Π΅Ρ Π²Π°ΡΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° Π½Π°ΡΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½Π΅.
ΠΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ ΠΈ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π»ΡΠ΄Π΅ΠΉ ΡΠ°ΠΌ?
Π’Π΅ΠΏΠ΅ΡΡ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ Π² https://github.com/axios/axios/pull/1419.
ΠΡΠΎ Π±ΡΠ»ΠΎ Π±ΡΡΡΡΠΎ :)
ΠΡΠΎ Π±ΡΠ» ΠΎΡΠΊΡΡΡΡΠΉ ΠΊΠΎΠ΄ :)
Π‘ΠΈΠ»Π° GitHub ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ :trollface:
@axe312ger @Khaledgarbaya , Π½Π΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π»ΠΈ ΡΠ°Π½ΠΎ ΠΏΡΠΎΡΠΈΡΡ ΠΎΠ± ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°?
@AyushG3112 Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Ρ ΠΌΠ΅Π½Ρ Π½Π΅Ρ ΠΏΡΠ°Π² Π½Π° Π²ΡΠΏΡΡΠΊ npm
@nickuraltsev @emilyemorehouse Π΅ΡΡΡ Π»ΠΈ ΠΏΠ»Π°Π½Ρ Π²ΡΠΏΡΡΡΠΈΡΡ ΡΡΠΎ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ?
ΠΡΠΌΠ°Ρ, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ, ΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ½Π΅Π΅ ΠΈ ΠΏΠΎΠ½ΡΡΠ½Π΅Π΅, ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
@axe312ger @Khaledgarbaya @nickuraltsev @emilyemorehouse ΠΊΡΠΎ -Π½ΠΈΠ±ΡΠ΄Ρ ΠΈΠ· Π²Π°Ρ ΠΌΠΎΠΆΠ΅Ρ @-ΡΠΏΠΎΠΌΡΠ½ΡΡΡ ΠΊΠΎΠ³ΠΎ-ΡΠΎ Ρ ΠΏΡΠ°Π²Π°ΠΌΠΈ Π½Π° ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ npm?
AxiosError Π±ΡΠ» Π±Ρ Π»ΡΡΡΠ΅... ΠΠΎΠΆΠ΅Ρ ΠΊΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ isAxiosError, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°?
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π½Π°ΠΌ Π½ΡΠΆΠ½Π° ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ°Ρ Π·Π°ΡΠΈΡΡ ΡΠΈΠΏΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ function isAxiosError(error: Error): error is AxiosError { return !!error.isAxiosError }
, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π±ΡΠ»ΠΎ Π±Ρ Π»ΡΡΡΠ΅ ΠΈΠΌΠ΅ΡΡ Π΅Π΅ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
@Khaledgarbaya @axe312ger ΠΡΠΎΡΠ»ΠΈ ΠΌΠ΅ΡΡΡΡ, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²ΡΠΏΡΡΡΠΈΡΡ ΡΠ΅Π»ΠΈΠ·, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°?
Π£ Π½Π°Ρ Π½Π΅Ρ ΠΏΡΠ°Π² ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ Π°ΠΊΡΠΈΠΎΠΌΡ Π² npm
ΠΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΠΊΠΎΠ³ΠΎ-ΡΠΎ, ΠΊΡΠΎ Π΄Π΅Π»Π°Π΅Ρ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°?
ΠΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΡΠΎ ΡΠ°ΠΌΠΈ Π² Π΄Π΅ΠΊΠ°Π±ΡΠ΅ ΠΏΡΠΎΡΠ»ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π° https://github.com/axios/axios/issues/1415#issuecomment -449578470 - ΠΠΈΠΊ ΠΈ ΠΠΌΠΈΠ»ΠΈ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ°Π²Π° Π½Π° ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ.
π Π― ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π» Π²ΡΠ΅ Π²ΡΠΏΡΡΠΊΠΈ Π΄Π»Ρ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΠΈ. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ CI ΡΠ½ΠΎΠ²Π° ΡΡΠ°Π½Π΅Ρ Π·Π΅Π»Π΅Π½ΡΠΌ, Ρ Π²ΡΠΏΡΡΡ!
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π’Π΅ΠΏΠ΅ΡΡ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ Π² https://github.com/axios/axios/pull/1419.