Axios рдпрд╛ Fetch: 2019 рдореЗрдВ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ?

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)) // { //  "userId": 1, //  "id": 1, //  "title": "delectus aut autem", //  "completed": false // } 

тЦНAxios


 axios.get("https://jsonplaceholder.typicode.com/todos/1")  .then(response => console.log("response", response.data)) // { //  "userId": 1, //  "id": 1, //  "title": "delectus aut autem", //  "completed": false // } 

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);  }); // error Error: Not Found 

тЦНAxios


 axios  .get("https://jsonplaceholder.typicode.com/todos/100000")  .then(response => {    console.log("response", response);  })  .catch(error => {    console.log("error", error);  }); // error Error: Not Found 

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 рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?


Source: https://habr.com/ru/post/hi477286/


All Articles