Axios рдПрдХ рдкреНрд░рд╕рд┐рджреНрдз рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдФрд░ Node.js. рдХреЗ рд▓рд┐рдП рдПрдХ HTTP рдЖрдзрд╛рд░рд┐рдд рд╡рд╛рджрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЕрдХреНрдЯреВрдмрд░ 2019 рдореЗрдВ, 25 рдорд┐рд▓рд┐рдпрди рдмрд╛рд░ npm рд╕реЗ Axios рдкреИрдХреЗрдЬ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХреНрд╕рд┐рдпреЛрд╕ рдХрд╛ рднрд╡рд┐рд╖реНрдп рдмрд╛рджрд▓ рд░рд╣рд┐рдд рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдПрдХреНрд╕рд┐рдпреЛ рдПрдХ рдореГрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд░реЗрдбрд┐рдЯ рдкрд░ рдПрдХ
рдЪрд░реНрдЪрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдерд╛ред рдЕрд░реНрдерд╛рддреН, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ:
- Axios GitHub рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдбреЗрд╡рд▓рдкрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд╛ рд╕реНрддрд░ рдмрд╣реБрдд рдХрдо рд╣реИред
- рд╕рдорд╕реНрдпрд╛рдУрдВ рдФрд░ рдкреАрдЖрд░ рдХреА рдЕрдирджреЗрдЦреА рдХреА рдЬрд╛рддреА рд╣реИред
- рд╡рд┐рдХрд╛рд╕ рджрд▓ рдЪреБрдк рд╣реИред
рд╕реНрдерд┐рддрд┐ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЪрд░реНрдЪрд┐рдд
рднреЗрджреНрдпрддрд╛ рд╕реЗ рдмрдврд╝реА рд╣реИред рдпрд╣ рднреЗрджреНрдпрддрд╛ 2017 рдореЗрдВ рдмрддрд╛рдИ рдЧрдИ рдереАред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдиреЗ рдЙрд╕реЗ рджреЛ рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд┐рдпрд╛ред
рдЬрдм Axios рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛ рдЧрдИ, рддреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рдкрд╛рд╕ рдПрдХ рдПрдкреАрдЖрдИ рдирд╣реАрдВ рдерд╛ рдЬреЛ рдПрдХ рд╡рд╛рджрд╛-рдЖрдзрд╛рд░рд┐рдд HTTP рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдорд╛рдирдХ XML HTTP рдЕрдиреБрд░реЛрдз (XHR) рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдерд╛, рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдХрдард┐рди рдерд╛ред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдПрдХреНрд╕рд┐рд╕ рдХреЛ рд╕рд╣рд░реНрд╖ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд▓рд┐рдпрд╛ рдХрд┐ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдиреЗ рдЙрдирдХреЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛ рджрд┐рдпрд╛ред

Fetch API 2015 рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рдо 2019 рдореЗрдВ рдЕрднреА рднреА Axios рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдЖрдЗрдП рдЗрди рджреЛрдиреЛрдВ рддрдХрдиреАрдХреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред
рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛрдб рд╡реЙрд▓реНрдпреВрдо
тЦНFetch
fetch('https://jsonplaceholder.typicode.com/todos/1') .then(response => response.json()) .then(json => console.log(json))
тЦНAxios
axios.get("https://jsonplaceholder.typicode.com/todos/1") .then(response => console.log("response", response.data))
Fetch рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рджреЛ рд╡рд╛рджреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдЬрдм рдПрдХреНрд╕рд┐рдпреЛрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ
data
рдЧреБрдг рдореЗрдВ JSON рдкрд░рд┐рдгрд╛рдо рддрдХ рд╕реАрдзреЗ рдкрд╣реБрдВрдЪ рд╣реЛрддреА рд╣реИред
рдмреЙрдбреА рдорд┐рдХреНрд╕рд┐рди
json()
рд╡рд┐рдзрд┐ рдПрдХ
рд░рд┐рд╕реНрдкрд╛рдВрд╕ рд╕реНрдЯреНрд░реАрдо рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╡рд╛рджрд╛ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЕрдиреБрд░реЛрдз рдХреЗ рдореБрдЦреНрдп рдкрд╛рда рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ JSON рдкрд░рд┐рдгрд╛рдо рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЛ Fetch рдореЗрдВ рдФрд░ рднреА рдЕрдзрд┐рдХ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
тЦНFetch
fetch("https://jsonplaceholder.typicode.com/posts", { method: "POST", body: JSON.stringify({ title: "Title of post", body: "Post Body" }) }) .then(res => { if (!response.ok) throw Error(response.statusText); return response.json(); }) .then(data => console.log(data)) .catch(error => console.log(error));
тЦНAxios
axios .post("https://jsonplaceholder.typicode.com/posts", { title: "Title of post", body: "Body of post" }) .then(response => console.log(response.data)) .catch(error => console.log(error));
Axios рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рд╕реЗ рдмрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЛрдб рдХреЛ рдХреНрд▓реАрдирд░ рдФрд░ рд╕реНрдкрд╖реНрдЯ рдмрдирд╛рддрд╛ рд╣реИред
рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐
тЦНFetch
fetch("https://jsonplaceholder.typicode.com/todos/100000") .then(response => { if (!response.ok) throw Error(response.statusText); return response.json(); }) .then(data => console.log("data", data)) .catch(error => { console.log("error", error); });
тЦНAxios
axios .get("https://jsonplaceholder.typicode.com/todos/100000") .then(response => { console.log("response", response); }) .catch(error => { console.log("error", error); });
Axios рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди Fetch API рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред Fetch рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛
response.ok
рдкреНрд░реЙрдкрд░реНрдЯреА рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рд╣реЛрдЧреАред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреА рдЬрд╛рдБрдЪ рдПрдХ рдЕрд▓рдЧ рдХрд╛рд░реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рд░реА рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:
const checkForError = response => { if (!response.ok) throw Error(response.statusText); return response.json(); }; fetch("https://jsonplaceholder.typicode.com/todos/100000") .then(checkForError) .then(data => console.log("data", data)) .catch(error => { console.log("error", error); });
рдЧреБрдо рд╕реБрд╡рд┐рдзрд╛рдПрдБ
Axios рдбреЗрдЯрд╛ рдЕрдкрд▓реЛрдб рдХреА рдкреНрд░рдЧрддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓рд╢ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреА рдкрд╕рдВрдж рдореЗрдВ рдПрдХ рдирд┐рд░реНрдгрд╛рдпрдХ рдХрд╛рд░рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдлрд╝реЛрдЯреЛ рдпрд╛ рд╡реАрдбрд┐рдпреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
const config = { onUploadProgress: event => console.log(event.loaded) }; axios.put("/api", data, config);
рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп
рдпрд╣рд╛рдВ Axios рдФрд░ Fetch API рдХреЗ рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк рджрд┐рдП рдЧрдП рд╣реИрдВ:
- Ky рдПрдХ рдЫреЛрдЯрд╛ рдФрд░ рд╕реНрдорд╛рд░реНрдЯ HTTP рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реИ рдЬреЛ
window.fetch
рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред - Superagent
XMLHttpRequest
рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдЫреЛрдЯрд╛ рдкреНрд░рдЧрддрд┐рд╢реАрд▓ HTTP рдХреНрд▓рд╛рдЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред
рдкрд░рд┐рдгрд╛рдо
2019 рдореЗрдВ рдореБрдЭреЗ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрд╣ рдмрд╣реБрдд рдХреБрдЫ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рд╕рд░реНрд╡рд░ рдкрд░ рд╕рд╛рдордЧреНрд░реА рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреА рдкреНрд░рдЧрддрд┐ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЗ рд▓рд┐рдП Axios рдпрд╛ Superagent рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред рдпрджрд┐ рдЖрдк Fetch рдХреА рд╕реАрдорд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕ API рдХрд╛ рдмреЗрд╣рддрд░ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдФрд░ Fetch code рдХреЛ рдереЛрдбрд╝рд╛ рд╕реБрдзрд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП, Ky рдЬреИрд╕реА рд░реИрдкрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЖрдЬрд╝рдорд╛рдПрдВред
рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдЖрдк рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ HTTP рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?
