Axios: рдПрдХреНрд╕рд┐рдпреЛрд╕ рдХреИрдЪ рдПрд░рд░ рд░рд┐рдЯрд░реНрди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрд░рд░ рдиреЙрдЯ рд╕рд░реНрд╡рд░ рд░рд┐рд╕реНрдкрд╛рдВрд╕

рдХреЛ рдирд┐рд░реНрдорд┐рдд 17 рдЬреВрди 2017  ┬╖  87рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: axios/axios

рдореИрдВ рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рддреНрдпрд╛рдкрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред

рдХреЛрдб:

axios.post('/formulas/create', {
       name: "",
       parts: ""
})
.then( 
    (response) => { console.log(response) },
    (error) => { console.log(error) }
);

рдХрдВрд╕реЛрд▓ рд▓реЙрдЧ рдЖрдЙрдЯрдкреБрдЯ

Error: Request failed with status code 422
    at createError (app.js:6765)
    at settle (app.js:29489)
    at XMLHttpRequest.handleLoad (app.js:6600)

рдиреЗрдЯрд╡рд░реНрдХ рдЯреИрдм рдЖрдЙрдЯрдкреБрдЯ
{"рдирд╛рдо": ["рдирд╛рдо рдлрд╝реАрд▓реНрдб рдЖрд╡рд╢реНрдпрдХ рд╣реИред"], "рдкрд╛рд░реНрдЯреНрд╕": ["рдкрд╛рд░реНрдЯреНрд╕ рдлрд╝реАрд▓реНрдб рдЖрд╡рд╢реНрдпрдХ рд╣реИред"]}

рдореБрдЭреЗ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ JSON рдлреЙрд░реНрдо рд╕рддреНрдпрд╛рдкрди рд╢рд╛рдорд┐рд▓ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЗрд░реЗ рдиреЗрдЯрд╡рд░реНрдХ рдЯреИрдм рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИ, рдореБрдЭреЗ рдЬреЗрдПрд╕ рдХреИрдЪ рдЖрдЙрдЯрдкреБрдЯ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ?

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднреА рдХреЛрд╢рд┐рд╢ рдХреА:

axios.post('/formulas/create', {
    name: "",
    parts: ""
})
.then(response => { 
    console.log(response)
})
.catch(error => {
    console.log(error)
});

рд╡рд╣реА рдкрд░рд┐рдгрд╛рдо

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдореЗрд░реЗ рдЬреИрд╕реЗ рд╣реА рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд▓реЛрдЧреЛрдВ рдХреЛ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред
https://laracasts.com/discuss/channels/vue/issues-with-axios-catch-method

  • рдПрдХреНрд╕рд┐рдпреЛрд╕ рд╕рдВрд╕реНрдХрд░рдг: ^0.16.2
  • рд╡реАрдпреВрдЬреЗрдПрд╕ 2.3.4
  • рд╡реНрдпреВ-рдЯреЗрдореНрдкрд▓реЗрдЯ-рдХрдВрдкрд╛рдЗрд▓рд░ 2.3.4
  • рд▓рд╛рд░рд╡реЗрд▓-рдорд┐рд╢реНрд░рдг
  • рдкрд░реНрдпрд╛рд╡рд░рдг: рдиреЛрдб v6.4.0, рдХреНрд░реЛрдо 58, рдореИрдХ рдУрдПрд╕рдПрдХреНрд╕ 10.12.4

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореЗрд░реЗ рдкрд╛рд╕ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИред рдЗрд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗ:

axios.post('/formulas/create', {
    name: "",
    parts: ""
})
.then(response => { 
    console.log(response)
})
.catch(error => {
    console.log(error.response)
});

console.log(error) рд╕реЗ console.log(error.response) рдореЗрдВ catch рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ ред

рдЖрдк рд╡реИрд╢реНрд╡рд┐рдХ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ error.response рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдорд╕реНрдпрд╛ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм console.log рддреНрд░реБрдЯрд┐ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореБрджреНрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдВрд░рдЪрдирд╛ рдирд╣реАрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ .response рд╕рдВрдкрддреНрддрд┐ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддреА рд╣реИред

рд╕рднреА 87 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореЗрд░реЗ рдкрд╛рд╕ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИред рдЗрд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗ:

axios.post('/formulas/create', {
    name: "",
    parts: ""
})
.then(response => { 
    console.log(response)
})
.catch(error => {
    console.log(error.response)
});

console.log(error) рд╕реЗ console.log(error.response) рдореЗрдВ catch рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ ред

рдЖрдк рд╡реИрд╢реНрд╡рд┐рдХ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ error.response рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдорд╕реНрдпрд╛ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм console.log рддреНрд░реБрдЯрд┐ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореБрджреНрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдВрд░рдЪрдирд╛ рдирд╣реАрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ .response рд╕рдВрдкрддреНрддрд┐ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддреА рд╣реИред

рдпрджрд┐ рдХреЛрдИ рдпрд╣ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ response рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдХреИрд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдП, рддреЛ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ:

axios.interceptors.response.use((response) => {
    return response;
}, function (error) {
    // Do something with response error
    if (error.response.status === 401) {
        console.log('unauthorized, logging out ...');
        auth.logout();
        router.replace('/auth/login');
    }
    return Promise.reject(error.response);
});

рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ return Promise.reject(error.response);

рдпрд╣ рд╡рд╣реА рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдЙрдкрд░реЛрдХреНрдд рд╕рдорд╛рдзрд╛рди рдЗрдВрдбреЗрдВрдЯрд┐рдВрдЧ рдпрд╛ рдЫреЛрдЯрд╛ рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЗ рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдЧрдбрд╝рдмрдбрд╝ рдХрд░ рджреЗрддрд╛ рд╣реИ :)

.post('ajax/register/otp', this.registerData)
.then(function (response) {
       return otpSent(response)
})
.catch(function (error) {
      console.log(error.response);
 });

@ рдЧреЛрдкрд╛рд▓-рдЬреА рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИред

рдЦреИрд░ @ рдкреЗрдбреНрд░реЛ-рдорд╛рд╕ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕рд░реНрд╡рд░ рдХреА рдУрд░ рд╕реЗ рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред рдореЗрд░реЗ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдореЗрд░реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ JSON рдереА рдЬрдм рддреНрд░реБрдЯрд┐ рд╣реБрдИ рддреЛ рдореИрдВ error.response рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рдерд╛

@ рдЧреЛрдкрд╛рд▓-рдЬреА рдЕрдЧрд░ рдореИрдВ рджреЗрд╡ рдЯреВрд▓реНрд╕ рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдЯреИрдм рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВред рдпрд╣ 401 рд╣реИ рдЕрдЧрд░ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдкрдбрд╝рддрд╛ рд╣реИред

рдореБрдЭреЗ @ рдкреЗрдбреНрд░реЛ-рдорд╛рд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рд╣реИред

рдпрд╣рд╛рдБ рдореЗрд░рд╛ рдХреЛрдб рд╣реИ

async function test () {
try {
  let res = await axios.get('/xxxxx/xxxx')

} catch (e) {
  console.log(e.response) // undefined
}
}

"рддреНрд░реБрдЯрд┐.рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдореИрдВрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдХреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдореЗрд░реЗ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдиреЗ рддреНрд░реБрдЯрд┐ 500 тАЛтАЛрд▓реМрдЯрд╛ рджреАред

рджреЗрд╡ рдЙрдкрдХрд░рдг рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдЯреИрдм

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдб: 500
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд┐рдХрд╛рдп:

{
  "error": {
    "statusCode": 500,
    "name": "Error",
    "message": "read ETIMEDOUT",
    "code": "ETIMEDOUT",
    "errno": "ETIMEDOUT",
    "syscall": "read",
    "stack": "Error: read ETIMEDOUT\n    at exports._errnoException (util.js:1050:11)\n    at TCP.onread (net.js:582:26)"
  }
}

рдХреНрд░реЛрдо рдХрдВрд╕реЛрд▓ рддреНрд░реБрдЯрд┐:

Uncaught (in promise) Error: Request failed with status code 500
    at createError (createError.js:15)
    at settle (settle.js:18)
    at XMLHttpRequest.handleLoad (xhr.js:77)

рд╕рдВрд╕реНрдХрд░рдг

"рдЕрдХреНрд╖": "^0.15.3"

catch рдореЗрдВ рдПрдХ рдкрдХрдбрд╝ рд╣реИ: рдпрджрд┐ рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ catch рдЖрдкрдХреЗ рдкрд╛рд╕ err.response рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐... рдареАрдХ рд╣реИ .. рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реИред рддреЛ, catch рдХрд┐рд╕реА рднреА рддреНрд░реБрдЯрд┐ рдХреЛ рдкрдХрдбрд╝ рд▓реЗрдЧрд╛ред рдиреЗрдЯрд╡рд░реНрдХ рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рдХрд╛рд░рдг рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ @fabiorecife рдЬреИрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рднреА рдпрд╣реА рдмрд╛рдд рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИред err рдХреЛ HTTP рддреНрд░реБрдЯрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рди рдорд╛рдиреЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдореЗрд╢рд╛ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

@alsofronie рддреЛ 413 рдЬреИрд╕реА рдкреНрд░реАрдлреНрд▓рд╛рдЗрдЯ рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд┐рдВрдЧ (рджреВрд╕рд░реЗ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛) рдХрд╛ рдкрд╕рдВрджреАрджрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ?

рдореБрдЭреЗ рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдорд┐рд▓ рд░рд╣реА рд╣реИ - рдХреНрд░реЛрдо devtools 401 рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ {"message":"Identity token has expired"} рдФрд░ рдореИрдВ catch( (error) => {...}) рд╣реВрдВ - рд▓реЗрдХрд┐рди error.response рдЦрд╛рд▓реАред рдЕрдЧрд░ рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдБ OPTIONS рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рдХреЙрд▓ GET рдХреА рд╕реНрдерд┐рддрд┐ рд╣реИ 200 ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ рдФрд░ 401 рд╕реНрдерд┐рддрд┐ рдХреЛрдб рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдЬрдЧрд╣ рдХрд╣рд╛рдВ рд╣реИ?

@robbiemu рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИ: https://github.com/axios/axios#handling -errors

@mrchief рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЗрд╕ рдкрд░ рдлрд┐рд░ рд╕реЗ рдЬрд╛рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╕рдорд╛рдзрд╛рди рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╡рд░реНрддрдорд╛рди рд╕рдорд╕реНрдпрд╛ рдЬреЛ рдореИрдВ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ error.response рдСрдмреНрдЬреЗрдХреНрдЯ рдореМрдЬреВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдлрд╝реАрд▓реНрдб undefined , response рдЕрдВрджрд░ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рдХреЙрд▓

@paolavness рдореИрдВ рдпрд╣рд╛рдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡

@mrchief рдЖрд╣ рдпрд╣ рдмрдВрдж рд╣реИ, рдЗрд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдХрд░реВрдВрдЧрд╛ред

рдореЗрд░реА рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереАред рдЖрдЦрд┐рд░рдХрд╛рд░, рдореИрдВрдиреЗ рддреНрд░реБрдЯрд┐ рдХреЛрдб рдХреЛ 401 рд╕реЗ 403 рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдФрд░ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬреИрд╕рд╛ рдореИрдВрдиреЗ рдЙрдореНрдореАрдж рдХреА рдереАред рдореИрдВ рдЦрд╛рд▓реА рддреНрд░реБрдЯрд┐ рд╡рд╕реНрддреБ рдХреЗ рдХрд╛рд░рдг рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддреНрд░реБрдЯрд┐ рдХреЛ рдЗрд╕ рдХрдерди рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ 401 рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдорд┐рд▓рд╛ рд╣реИ:

"[рдП 401 рддреНрд░реБрдЯрд┐] рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рдбрдмреНрд▓реНрдпреВрдбрдмреНрд▓реНрдпреВрдбрдмреНрд▓реНрдпреВ-рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╣реЗрдбрд░ рдлрд╝реАрд▓реНрдб рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ рдЕрдиреБрд░реЛрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рдкрд░ рд▓рд╛рдЧреВ рдЪреБрдиреМрддреА рд╣реЛред"

рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк 401 рддреНрд░реБрдЯрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ www-рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╢реАрд░реНрд╖рд▓реЗрдЦ рдлрд╝реАрд▓реНрдб рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдмрд╕ 403 рддреНрд░реБрдЯрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рд╕реБрдкреНрд░рднрд╛рдд рджреЛрд╕реНрддреЛрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдереА, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ cors рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЕрдкрдиреЗ рдЕрдкрд╛рдЪреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдмрджрд▓рдХрд░ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдкрд░ рдПрдХ рдирдЬрд░

https://enable-cors.org/server_apache.html

рдЖрдк рдХреЗрд╡рд▓ console.log(JSON.stringify(error)) рд╕рд╛рде рд╕рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдбреАрдмрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

axios.post(url)
рддрдм ((рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛) => {
// рдХреЛрдИ рдЪреАрдЬрд╝
})
рдХреИрдЪ ((рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛) => {
рдЕрдЧрд░ (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ред рд╕реНрдерд┐рддрд┐ == рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд) {
рдЪреЗрддрд╛рд╡рдиреА ('рдЕрдирдзрд┐рдХреГрдд')
}
})

рдореБрдЭреЗ @fabiorecife рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рдереАред рдореИрдВрдиреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдмрд╕реЗ рд╕реБрдВрджрд░ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ рдФрд░ рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИред

.catch(error=>{
let errorObject=JSON.parse(JSON.stringify(error));
console.log(errorObject);
dispatch(authError(errorObject.response.data.error));
})

рдпрд╣ errorObject рдЪрд░ рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред

@petruscurtu рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИя╝Б рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИя╝Б
image
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ 'рдиреЛ рдПрдХреНрд╕реЗрд╕-рдХрдВрдЯреНрд░реЛрд▓-рдЕрдиреБрдорддрд┐-рдореВрд▓' рдХреНрдпреЛрдВ рдлреЗрдВрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд░реНрд╡рд░ рдиреЗ рдЗрд╕реЗ рд╕реЗрдЯ рдХрд░ рджрд┐рдпрд╛ рд╣реИ! рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдареАрдХ рд╣реИ

image

рд╣рд▓ рдХрд┐рдпрд╛ред рдСрде рдПрдкреАрдЖрдИ рд╕рд╣реА рд╣реЗрдбрд░ рдХрд╛ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдПрдХреНрд╕реЗрд╕-рдХрдВрдЯреНрд░реЛрд▓-рдЕрдиреБрдорддрд┐-рдореВрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

@luxueyan рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ CORS рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВред рдЬрд╣рд╛рдБ рддрдХ axios рдХрд╛ рд╕рдВрдмрдВрдз рд╣реИ, рдореИрдВ рдЖрдкрдХреЗ рдХрдВрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдПрдХ config рдФрд░ request рдСрдмреНрдЬреЗрдХреНрдЯ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдБред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЙрд╕ рдЖрдЙрдЯрдкреБрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЙрд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкреНрд░рд╛рд░реВрдк рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХрд╛ рд╕рд░реНрд╡рд░ рд╡рд╛рдкрд╕ рднреЗрдЬ рд░рд╣рд╛ рд╣реИред

@luxueyan рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЕрдкрдирд╛ Access-control-allow-origin http://localhost:8081 рд▓рд┐рдП рд╕реЗрдЯ рдЕрдк рдХрд┐рдпрд╛ рдерд╛ (рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рд╕рд░реНрд╡рд░ рдкрд░ рдЗрд╕ рдкрддреЗ рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рд╣реИ http://10.31.143.32:8080 ?) рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХрд╛ URL рдХреНрдпрд╛ рд╣реИ? рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдХрд╣рд╛рдБ рд╕реЗ рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ? рдХреНрдпрд╛ рдпрд╣ http://localhost:8081 ? рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рднрд▓реЗ рд╣реА рдкреЛрд░реНрдЯ рд╕рдВрдЦреНрдпрд╛ рднрд┐рдиреНрди рд╣реЛ, рддреЛ рдпрд╣ CORS рдбреЛрдореЗрди рдирд┐рдпрдореЛрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░ рд░рд╣рд╛ рд╣реИред

@petruscurtu рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ 'JSON.parse (JSON.stringify (рддреНрд░реБрдЯрд┐))' рд╣реИред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ

@chiefie рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ 'рдкрд╣реБрдВрдЪ-рдирд┐рдпрдВрддреНрд░рдг-рдЕрдиреБрдорддрд┐-рдореВрд▓' рд╕реЗрдЯрд┐рдВрдЧ рдареАрдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдп рдЕрдЬрд╛рдХреНрд╕ рдПрдкреАрдЖрдИ рд╕рд╣реА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЬрд╡рд╛рдм рджреЗ рд╕рдХрддрд╛ рд╣реИя╝БрдХреЗрд╡рд▓ рдХреИрдкреНрдЪрд╛ рдХреЛрдб рдПрдкреАрдЖрдИ рдЧрд▓рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИуАВ рдЬрдм рдпрд╣ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИя╝М рдпрд╣ 478 рд╕реНрдерд┐рддрд┐ рдФрд░ рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢рд░реАрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВя╝Б

рдЕрджреНрдпрддрди! рдпрд╣ рд╕рд░реНрд╡рд░ рдПрдкреАрдЖрдИ рддреНрд░реБрдЯрд┐ рдереА, рдЗрд╕рдореЗрдВ рд╣реЗрдбрд░ рдореЗрдВ рдХреЙрд░реНрд╕ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдирд╣реАрдВ рдереАрдВред рдЕрдм рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░реЛред

рдзрдиреНрдпрд╡рд╛рдж @ рдЬреБрд▓рд┐рдпрд╛рдиреЛ-рдмреИрд░реЛрд╕ рдпрд╣ рдХреНрд░реЙрд╕-рдУрд░рд┐рдЬрд┐рди рдХреЗ рдХрд╛рд░рдг рдерд╛ред рдЕрдм рдореЗрд░реЗ рд╕рднреА рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдз рдареАрдХ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

рдЬрдм рднреА рд╕рд░реНрд╡рд░ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ/CORS рдЕрдорд╛рдиреНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдХрдЪреНрдЪреА рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рджреА рдЬрд╛рддреА рд╣реИред
error.response рдмрд╕ undefined ред

рдореИрдВрдиреЗ рдЕрднреА рдПрдХ рдЗрдВрдЯреАрдЧреНрд░реЗрд╢рди рдПрд░рд░ рдмрдирд╛рдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рдВрджреЗрд╢, рд╕реНрдерд┐рддрд┐ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдбреЗрдЯрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ ... рд▓реЗрдХрд┐рди рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ред рдЗрд╕ рддрд░рд╣ рдореИрдВ рдЕрдкрдиреЗ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рд╕реЗ axios/рдХрдЪреНрдЪреА рддреНрд░реБрдЯрд┐ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

Axios рджреЛрд╕реНрддреЛрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ HTTP рддреНрд░реБрдЯрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП... рдЬрд┐рд╕рдореЗрдВ рдПрдХ error.response ред
рдЗрд╕реЗ рдКрдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рдХрд▓ рдЗрд╕ рдЕрдВрдХ рдХреА рдПрдХ рд╕рд╛рд▓ рдХреА рдмрд░рд╕реА рдереАред рдХреНрдпрд╛ рдпрд╣ рдХрднреА "рддрдп" рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдпрд╛ рдЗрд╕реЗ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ "рдЧреИрд░-рдореБрджреНрджрд╛" рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ?

@frostshoxx рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ "рдЧреИрд░-рдореБрджреНрджрд╛" рд╣реИред рдЬрдмрдХрд┐ рдореИрдВ рд╣рд░ рдХрд┐рд╕реА рдХреЗ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЕрдм рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХреЛрдИ рдмрдЧ рдпрд╛ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рджреБрдирд┐рдпрд╛ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╣реИред

рд╣рд░ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЬреЛ рднреНрд░рдорд┐рдд рд╣реИ (рдФрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдПрдХ рд╡рд░реНрд╖ рдкреБрд░рд╛рдирд╛ рд╣реЛрдиреЗ рдХрд╛ рдЬрд╢реНрди рдордирд╛рдиреЗ рдХреЗ рд▓рд┐рдП) рдореИрдВ рд╕рдордЭрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

рдЖрдк рдпрд╣рд╛рдБ рдХреИрд╕реЗ рд╕рдорд╛рдкреНрдд рд╣реБрдП?

рдРрд╕реЗ рдХрдИ рдХрд╛рд░рдг рд╣реИрдВ рдЬрд┐рдирд╕реЗ рдЖрдк .catch() рдмрдВрдЬрд░ рднреВрдорд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрднреА-рдХрднреА Axios рдХреЛ рдЕрдиреБрд░реЛрдз рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рд╣реА рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдпрд╣ рдХрднреА-рдХрднреА CORS рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИред рдЬрдм Axios OPTIONS рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ Axios рдШрдмрд░рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ .catch() рднреЗрдЬрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред

рдЖрдк рдореЗрдВ рд╕реЗ рдХреБрдЫ рд▓реЛрдЧ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, "рдирд╣реАрдВ, рдореИрдВ рдЗрд╕реЗ DevTools рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд╛рдкрд╕ рдЖ рдЧрдИ!"ред рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕рдЪ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХрднреА-рдХрднреА Axios рдПрдХ HTTP рдЕрдиреБрд░реЛрдз рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛, рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░реЗрдЧрд╛, рд╕реНрд╡рдпрдВ рдХреЛ рдирд┐рд░рд╕реНрдд рдХрд░реЗрдЧрд╛ рдФрд░ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рд╡рд╛рдкрд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ .catch() рднреЗрдЬ рджреЗрдЧрд╛ред Axios рджреНрд╡рд╛рд░рд╛ .catch() рдлрд╝рдВрдХреНрд╢рди рдЪрд▓рд╛рдиреЗ рдХреЗ рдХреБрдЫ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдмрд╛рдж рдЖрдкрдХрд╛ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рд╡рд╛рдкрд╕ рдЖ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ DevTools рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрднреА рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд╕реБрди рд░рд╣рд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ Axios рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП response рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрд╕ рд╕рдордп рдореМрдЬреВрдж рдирд╣реАрдВ рдерд╛ рдЬрдм Axios рдиреЗ .catch() рдлрд╝рдВрдХреНрд╢рди рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛ред

рдЖрдк рдореЗрдВ рд╕реЗ рдЬрд┐рдиреНрд╣реЗрдВ рд╕рд░реНрд╡рд░ рд╕реЗ 4XX рдпрд╛ 5XX рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИ, рд╡реЗ рднрд╛рдЧреНрдп рдореЗрдВ рд╣реИрдВ! рдЖрдорддреМрд░ рдкрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╕рд░реНрд╡рд░ рд╕реЗ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЛрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Axios рдХреЛ рдкреВрд░реНрдг рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЪрд╛рд░реЛрдВ рдУрд░ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рдерд╛ред рдЗрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ, Axios рдЖрдкрдХреЛ .catch() рд╕рд╛рде response рдкрд░ рднреЗрдЬрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ error рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд▓рдкреЗрдЯрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдордХреНрдЦреА рдкрд░ рдмрдирд╛рддрд╛ рд╣реИред
рддреЛ рдЕрдЧрд░ рдЖрдкрдХреЛ 5XX рдпрд╛ 4XX рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓ рд░рд╣реА рд╣реИрдВ, рддреЛ рд╕рдВрднрд╡рддрдГ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЙрдкрд▓рдмреНрдз рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ DEEP рджрдлрди рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ!

рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ error.response.data.data.message ред рдпрд╣ рд▓рд╛рд░рд╡реЗрд▓ рдПрдкреАрдЖрдИ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕рд░реНрд╡рд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВред

рдЧреИрд░-рд▓рд╛рд░рд╡реЗрд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ - рд╕рд░реНрд╡рд░ рд╕реЗ рдореВрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо error.response.data рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рд░реНрд╡рд░ рдЕрдкрдиреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп data{} рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд▓рдкреЗрдЯрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЖрдкрдХреЛ рдПрдХ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдкрд░рдд рдХреЛ рдЧрд╣рд░рд╛ рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ рдЕрдВрдд рдореЗрдВ рд╡рд╣рд╛рдВ рд╕реЗ .message рдЬреИрд╕реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдВрдЪреЗрдВред

рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдХрдВрд╕реЛрд▓ рдХрд┐рдпрд╛ред рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реИ!

рд╣рд╛рдБ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╕ рдореБрдЭреЗ рд╣рд╛рд╕реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП error.response.data рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ Axios рддреНрд░реБрдЯрд┐ рд╡рд╕реНрддреБ рдкрд░ console.log(error) рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡реЗ рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЗрд╕рдХреЗ рдмрдЬрд╛рдп console.log(JSON.stringify(error)) рд▓рд┐рдЦрддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдкреВрд░реА рд╡рд╕реНрддреБ рдХреЛ рдЙрд╕рдХреА рд╕рд╛рд░реА рдорд╣рд┐рдорд╛ рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗред

рдпрд╣ рдХреНрд░рдордмрджреНрдз JSON рд╣реИ рдЬрд┐рд╕реЗ рд▓рдЧрднрдЧ 2 рдкрд░рддреЛрдВ рдХреА рдЧрд╣рд░рд╛рдИ рдХреЗ рдмрд╛рдж рдкрдврд╝рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ рдЖрдкрдХреЛ рддреНрд░реБрдЯрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рдЪреАрдЬрд╝ рдХреЛ рдХреЙрдкреА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕реЗ JSON рдкреНрд░реАрдЯрд┐рдлрд╝рд╛рдпрд░ рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред


рдпрджрд┐ рдЖрдкрдХреЛ Axios рдореЗрдВ 500 рддреНрд░реБрдЯрд┐ рдпрд╛ 400 рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐ (рдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрддреНрдд рддреНрд░реБрдЯрд┐ рдХреЛрдб) рдорд┐рд▓ рд░рд╣реА рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрдиреБрд░реЛрдз рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ!

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЧрд╣рд░рд╛ рд╣реИ, рдФрд░ рдХреНрдпреЛрдВрдХрд┐ Axios рд╣рдорд╛рд░реЗ console.log(error) рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ error{} рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ, рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдпрд╣ рдореМрдЬреВрдж рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╣рд╛рдБ рд╣реИ!

@ рд╡реАрдПрд╕рдЬреА 24 рдЖрджрдореА !! рдпрд╣ рдПрдХ рдЬреАрд╡рди рд░рдХреНрд╖рдХ рдЙрддреНрддрд░ рд╣реИ :D

fwiw, JSON.stringify(error) рдмрдо 0.18.0 рдореЗрдВ рдкрд░рд┐рдкрддреНрд░ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рдХрд╛рд░рдгред

рдореИрдВрдиреЗ рдПрдХ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рдкрд░ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрддрд╛ рд╣реИ

axios.interceptors.response.use(
  response => {
    // do someting on response
    return response
  },
  error => {
    // do someting on errir
    return Promise.reject(error.response.data) // => gives me the server resonse
  }
)
    try {
      const { data } = await htttp.post(login, payload)
      // do someting with data
    } catch (e) {
      console.log(e) // server response data
    }

@alimirayman рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдореЗрдВ рд╣рд░ рдЕрдиреБрд░реЛрдз рдкрд░ рдирдЬрд░ рд░рдЦрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рддреЛ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдЬрдм рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдореЗрд░реЗ рдХреЛрдб рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд╛рди рдкрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред рдЬрдм рддрдХ рдореБрдЭреЗ рдЧрд▓рдд рд╕рдордЭ рдирд╣реАрдВ рдЖрдпрд╛ (рдЬреЛ рдорд╛рдорд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ), axios рдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдиреЗ рддреНрд░реБрдЯрд┐ рдХреЛ рдлреЗрдВрдХрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рддреНрд░реБрдЯрд┐ рд╡рд╛рдкрд╕ рдХрд░ рджреА рд╣реИ?

@ hhowe29 circular-json

рдореБрдЭреЗ рдпрд╣ рдзрд╛рдЧрд╛ рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреА рддрд░рд╣ рдорд┐рд▓рд╛ рдФрд░ рдореИрдВ vue.js рдФрд░ vuex рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде axios рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдореЗрд░рд╛ vuex рдореЙрдбреНрдпреВрд▓ рдХреНрд░рд┐рдпрд╛ axios рддреНрд░реБрдЯрд┐ рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИ рдФрд░ vuex рдореЙрдбреНрдпреВрд▓ рдХреЗ ERROR_HAPPENED рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз (ERROR_HAPPENED, рддреНрд░реБрдЯрд┐) рдЪрд▓рд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рддреНрд░реБрдЯрд┐ рдЗрд╕рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдмрд┐рдирд╛ рдЖрддреА рд╣реИ рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк error.response рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдПрдХ vuex рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВред

рдЕрдЧрд░ рдореИрдВ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рддреНрд░реБрдЯрд┐ред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛) рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдкреНрд░рддрд┐рдмрджреНрдз () рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВред рддреЛ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ vuex рджреНрд╡рд╛рд░рд╛ рдЙрд▓рдЭрд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдпрд╛ рддреЛ рдкреНрд░рддрд┐рдмрджреНрдз (ERROR_HAPPENED, error.response.data) рдпрд╛ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ 401 рд╣реИ рдФрд░ рд╕реНрдерд┐рддрд┐ рдХреЛрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреБрдЫ рдЕрдиреНрдп рдкреНрд░рддрд┐рдмрджреНрдз рдЪрд▓рд╛рдПрдВред рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореИрдВрдЧрд▓рд┐рдВрдЧ рдХреЗрд╡рд▓ 401 рдХреЛрдб рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИред рдЕрдиреНрдп рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЬреИрд╕реЗ 404 рдпрд╛ 500 рдореЗрд░реЗ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВред

рдЙрд▓рдЭрд╛ рдирд╣реАрдВред Vuex рдЗрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд░рддрд╛, рдмрдЧ рд╕реЗ рднреА рдирд╣реАрдВред
рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ, рдЬреНрдпрд╛рджрд╛рддрд░ рдПрдХреНрд╕рд┐рдпреЛрд╕ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХреЗ рдЕрдВрджрд░, рдЗрд╕реЗ рдЙрдЬрд╛рдЧрд░ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреА рд╣реИрдВред

рдХреБрдЫ рдЕрдкрдбреЗрдЯ?

@AllanPinheiroDeLima рджреЗрд░ рд╕реЗ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдХреЛрдИ рднреА рдХрд┐рд╕реА рдХреЗ рдХреЛрдб рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд╛рди рдкрд░ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рд▓рд┐рдЦрддрд╛ рд╣реИред рд╣рдо рдХреЛрдб рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдмрд╛рд░ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╕рд╣рд╛рдпрдХ рд╡рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╣ рдирдВрдмрд░ 1 рд╣реИред рдирдВрдмрд░ 2, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреНрд╡реЗрд░реА рдпрд╣ рдереА рдХрд┐ рдЙрдиреНрд╣реЗрдВ _server error response_ рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЙрдиреНрд╣реЗрдВ try catch рдореЗрдВ _javascript error_ рдорд┐рд▓рд╛ред axios рддреНрд░реБрдЯрд┐ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдореВрд▓ рд░реВрдк рд╕реЗ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдХреЛрдб рдХреЗ рдЕрдкрдиреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдмрджрд▓рдирд╛ рдпрд╛ рдмрдбрд╝реЗ рдХреЛрдб рдЖрдзрд╛рд░ рдХреЛ рдмрджрд▓рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рд╣рд╛рдБ рдореИ рд╕рд╣реНрдордд рд╣реВрдБред рдореБрдЭреЗ рдХрдЪреНрдЪреЗ рдХреАрдХреНрд▓реЛрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рд░реНрд╡рд░ рдореЗрдВ рдПрдХреАрдХрд░рдг рдХрд░рдиреЗ рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ред рдЗрд╕ рддрд░рд╣ рдореИрдВ рд╕рд░реНрд╡рд░ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЛ рд░реЛрдХ рд╕рдХрддрд╛ рдерд╛ рдФрд░ рдлрд┐рд░ рдПрдХ рд╕реБрдкрд╛рдареНрдп рдХреЛ рд╕рд╛рдордиреЗ рдХреЗ рдЫреЛрд░ рдкрд░ рднреЗрдЬ рд╕рдХрддрд╛ рдерд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдпрд╣реА рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ :)

рдореБрдЭреЗ рдЕрднреА рднреА рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рдПрдХреНрд╕рд┐рдпреЛрд╕ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ console.log('interceptors', JSON.stringify(error)) рдореБрдЭреЗ рдпрд╣ рд▓реЙрдЧ interceptors {"config":{"transformRequest":{},"transformResponse":{},"timeout":0,"xsrfCookieName":"XSRF-TOKEN","xsrfHeaderName":"X-XSRF-TOKEN","maxContentLength":-1,"headers":{"Accept":"application/json, text/plain, */*","Content-Type":"application/json;charset=utf-8"},"method":"post","url":"http://localhost:5000/api/autenticacao/login","data":"{\"siglaInstituicao\":\"NEAS\",\"usuario\":\"emersoncpaz\",\"senha\":\"belle1903\"}"},"request":{}} рд▓реЗрдХрд┐рди рдХреНрд░реЛрдо devtools рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдкреАрдЖрдИ рд╕реЗ рд╕рд╣реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИ: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) axios рд╕реЗ рдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ?

рдХрд┐рд╕реА рднреА рдХрд╛рд░рдг рд╕реЗ 5xx рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдХреИрдЪ рдмреНрд▓реЙрдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)? рд╕реНрдерд┐рддрд┐ рдХреЛрдб 502 DevTool рдХрдВрд╕реЛрд▓ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди Axios рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ (рд▓рд╛рд░реНрд╡реЗрд▓ рдПрдмреЙрд░реНрдЯ рд╣реЗрд▓реНрдкрд░ рдХреЗ рд╕рд╛рде: рдПрдмреЙрд░реНрдЯ (500, 'рд╕рдВрджреЗрд╢'))
```
рдХреИрдЪ (рддреНрд░реБрдЯрд┐ => {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (error.response.data.message);
});

```

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдХреЛрдб рдХреЗ рд╕реНрдирд┐рдк рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рдкреВрд░реНрдг рдХрд╛рдордХрд╛рдЬреА рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдпрд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? 1 рд▓рд╛рдЗрди рдХрд╛ рд╕реНрдирд┐рдк рдЬреНрдпрд╛рджрд╛ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЕрдЧрд░ рдЖрдкрдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡реЗ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдХрд┐рд╕рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдХреЛрдб рдХрд╛ рд╕реНрдирд┐рдк рд░рдЦрд╛ рд╣реИ, рддреЛ рдЕрдВрддрд┐рдо рдХрд╛рдордХрд╛рдЬреА рдХреЛрдб рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ?

рдореИрдВ рдЗрдирд░рд╕реЗрдкреНрдЯрд░ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЛрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдпрд╛ рддреЛ 401 рд▓реЙрдЧрд┐рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдз рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрддрд╛ рд╣реИ, рдпрд╛ рдпрджрд┐ рдЗрд╕рдХреЗ 422 рдЕрдиреБрд░реЛрдз рдХреЛ рдлреЙрд░реНрдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓рд┐рдВрдЧ рдШрдЯрдХ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рджреЗрддрд╛ рд╣реИред

рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?

рдореИрдВ Nuxt axios рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореЗрд░рд╛ onResponseError рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

$axios.onResponseError(error => {
    const code = parseInt(error.response && error.response.status)
    console.log(code, 'Axios onResponseError')
    console.log(error.response.status, 'status')
    console.log(error.config, 'config')
    console.log(error.response, 'response')
    // Do something with response error
    if (error.response.status === 401) {
      console.log('unauthorized, logging out ...')
      app.$auth.logout()
      redirect('/login')
    }
    if (code === 400) {
      // redirect('/400')
      console.log(`400 onResponseError`)
    }
    if (code === 408) {
      console.log(`A timeout happened on url onResponseError`)
    }
    if (code === 418) {
      console.log(`A teapot onResponseError`)
    }
    if (code === 428) {
      console.log(`428 onResponseError`)
      // redirect('/login')
    }
    return Promise.reject(error)
  })

рдФрд░ рдПрдХ рдирдореВрдирд╛ рдХреЙрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

async postRecord (clear = false) {
      try {
        const { r } = await this.$axios.$post(this.endPoint, this.formData)
        console.log(r, 'response')
        // do something with response
      } catch (e) {
        console.log(e, 'error in crud') // server response data
        // i should never get here if error since the interceptor should kill the request if 401
       // for testing this request is returning a 401
      } finally {
        this.submitted = false
      }
    },

рдзрдиреНрдпрд╡рд╛рдж,
рдбреЗрд╡

рдЬрдм рдЗрдВрдЯрд░рдиреЗрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ error.response рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ - рдХреНрдпрд╛ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ?

рдореБрдЭреЗ рд╕рд╛рджреЗ рдкрд╛рда рдореЗрдВ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ, рдореБрдЭреЗ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

var errorObj = JSON.parse(JSON.stringify(error));

рдпрд╣ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рд╣реИ рдФрд░ рдЕрдХреНрд╖ рдирд╣реАрдВ рд╣реИ, рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕рдореЗрдВ рдЦреБрджрд╛рдИ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ
error.response.status, рдЕрдЧрд░ рдпрд╣ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ рддреЛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдХ рдЗрдВрдЯрд░рдиреЗрдЯ рд╣реИ
рдХрдиреЗрдХреНрд╢рди рд╕рдорд╕реНрдпрд╛ рдпрд╛ рдЖрдкрдХреЗ JS рдореЗрдВ рд╕рд┐рдВрдЯреИрдХреНрд╕ рддреНрд░реБрдЯрд┐

рдмреБрдзрд╡рд╛рд░ рдХреЛ, 2 рдЬрдирд╡рд░реА 2019, 15:40 рдЗрдмреНрд░рд╛рд╣рд┐рдо рдЕрдЬрд╣рд░ рдЕрд░рдорд╛рд░ < рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

рдореБрдЭреЗ рд╕рд╛рджреЗ рдкрд╛рда рдореЗрдВ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ, рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рд╛
рдПрдХ рд╡рд╕реНрддреБред

var errorObj = JSON.parse (JSON.stringify (рддреНрд░реБрдЯрд┐));

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/axios/axios/issues/960#issuecomment-450896476 , рдпрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
рд╕реВрддреНрд░
https://github.com/notifications/unsubscribe-auth/AEETt2r3bt2QCixDlzh4fZvWp_1rPkxuks5u_NMEgaJpZM4N9Ljl
.

@kgrosvenor рдореИрдВ рд╕рд░реНрд╡рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд╛рд▓ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЯрд╛рдЗрдордЖрдЙрдЯ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП axios рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП axios рдореЗрдВ рдХреЙрд▓рдмреИрдХ рдЯреНрд░рд┐рдЧрд░ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдореБрдЭреЗ рд╕рд╣реА рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрдВрд╕реЛрд▓ рдЗрд╕реЗ рд╕рд╛рджреЗ рдкрд╛рда рдореЗрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреЗрд╡рд▓ рд╕реНрд╡рд░реВрдкрдг рдореБрджреНрджрд╛ рд▓рдЧрддрд╛ рд╣реИ, рдЬреЛ рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред

рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдореИрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╕рд░реНрд╡рд░ рдореЗрдВ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рдЖрдк рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдПрдХ рдЯрд╛рдЗрдордЖрдЙрдЯ рдорд╛рд░ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдХрд┐ рддреНрд░реБрдЯрд┐ рдореЗрдВ 'рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛' рдореМрдЬреВрдж рд╣реИ рдпрд╛ рдирд╣реАрдВ

axios.get()
.then(function(done) {
   //fine and can get done.data
})
.catch(function(err) {
  //catch the error, check it has a response object with lodash 
  if(_.has(err, 'response') {
     console.log(error.response.status);  
     console.log(error.response.data);
 } 
 else {
    console.log("Most likely a server timeout or an internet connection error");
    console.log("error response property is undefined")
 }
}); 

рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдореБрдЭреЗ 500 рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЙрд╕ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрднрд╛рд▓ рдирд╣реАрдВ рд╕рдХрддрд╛ред рддреЛ рдореИрдВ рдЙрд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде 200 рд╕реНрдерд┐рддрд┐ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рд╡рд╣ рдореБрдЭрд╕реЗ рдирд╛рд░рд╛рдЬ рд╣реИ рдФрд░ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдЙрд╕рдХрд╛ HTTP рдХреНрд▓рд╛рдЗрдВрдЯ 500 рд╕реНрдерд┐рддрд┐ рд╡рд╛рд▓реЗ рд╕рднреА рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИред рд╡рд╣ рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдореВрд░реНрдЦ рд╣реВрдБ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ 500 рд╕реНрдерд┐рддрд┐ рд╡рд╛рд▓рд╛ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред рдореИрдВ рдЙрд╕реЗ рдХреИрд╕реЗ рд╕рдордЭрд╛рдКрдВ рдХрд┐ axios 500 рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЛ рд╣реИрдВрдбрд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ?

рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдореБрдЭреЗ 500 рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЙрд╕ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрднрд╛рд▓ рдирд╣реАрдВ рд╕рдХрддрд╛ред рддреЛ рдореИрдВ рдЙрд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде 200 рд╕реНрдерд┐рддрд┐ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рд╡рд╣ рдореБрдЭрд╕реЗ рдирд╛рд░рд╛рдЬ рд╣реИ рдФрд░ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдЙрд╕рдХрд╛ HTTP рдХреНрд▓рд╛рдЗрдВрдЯ 500 рд╕реНрдерд┐рддрд┐ рд╡рд╛рд▓реЗ рд╕рднреА рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИред рд╡рд╣ рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдореВрд░реНрдЦ рд╣реВрдБ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ 500 рд╕реНрдерд┐рддрд┐ рд╡рд╛рд▓рд╛ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред рдореИрдВ рдЙрд╕реЗ рдХреИрд╕реЗ рд╕рдордЭрд╛рдКрдВ рдХрд┐ axios 500 рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЛ рд╣реИрдВрдбрд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ?

рдЕрд╕рд▓ рдореЗрдВ, рдЖрдкрдХреЛ рд╕реНрдерд┐рддрд┐ 500 тАЛтАЛрдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЖрдк рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ http рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрдХреНрд╖ рдореЗрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИ, рдпрд╣ рддрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЗрд╕ рд▓рд┐рдВрдХ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИ (https://github.com/axios/axios#handling-errors)

рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╕рд░реНрд╡рд░ рд╕реЗ 500 рддреНрд░реБрдЯрд┐ рдХреИрд╕реЗ рдкрдХрдбрд╝рддрд╛ рд╣реВрдВ, рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

.catch(function (error) {
    var errorObj = JSON.parse(JSON.stringify(error));
    console.log(errorObj);
    if (errorObj.code == 'ECONNABORTED') {
        alert('Connection timed out.');
    }
});

рдЖрдк рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рд╕рд░реНрд╡рд░ рдХреА рдУрд░ рд╕реЗ рдЙрджреНрджреЗрд╢реНрдп рдкрд░ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 500 рд╕реНрдерд┐рддрд┐ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдмреБрд░рд╛ рдЕрднреНрдпрд╛рд╕ ...

рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рднреА рдорд┐рд▓ рд░рд╣реА рд╣реИред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ рддреЛ рдореИрдВ рдХреЛрдб рдХреЗ рдиреАрдЪреЗ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВред

axios.interceptors.response.use(function (response) {
  return response;
}, function (error) {
  // Do something with response error
  let {response} = error;
  // response?.status === 401 es7 way.
  if (response && response.status === 401) {
    // Do logout;
    // Redirect to login;
    return Promise.reject(error.response);
  } 
  else if (error.response){
    // Do something.
    console.log('some API_CLIENT error');
    return Promise.reject(error.response);
  }
 return Promise.reject(error);
});

рдпрд╣ рдмрд╣реБрдд рдмреБрд░рд╛ рд╣реИ, рддреНрд░реБрдЯрд┐ рдкреНрд░рдмрдВрдзрди рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

рдЕрдм рдХреИрд╕рд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ? рдореИрдВ рдЕрднреА рднреА рд╕рдВрд╕реНрдХрд░рдг 0.18.0 рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ!

рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛: @nuxtjs/axios v5.0.0

рдпрд╣ рдПрдХ рдмрдЧ рд╣реИ

рдбреЗрдирд┐рдпрд▓ рд╕реНрдЯрд░реНрди рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.comф║О 2019х╣┤2цЬИ28цЧехСихЫЫ 04:39хЖЩщБУя╝Ъ

рдореИрдВ рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдБред

рдЯреАрдПрд▓; рдбреЙ:
рд╣рд░ рдХреЛрдИ HTTP рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред
рдбреЗрд╡рд▓рдкрд░реНрд╕ HTTP рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/axios/axios/issues/960#issuecomment-468020991 , рдпрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
рд╕реВрддреНрд░
https://github.com/notifications/unsubscribe-auth/AAN8CbMHohyuSZHYlcieD_5yUqizpkSYks5vRuzygaJpZM4N9Ljl
.

рдЖрдкрдХреЛ рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ README рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ред рдзрдиреНрдпрд╡рд╛рдж!

https://github.com/axios/axios/issues/960#issuecomment -320659373

рдЕрдиреНрдп рдкреЛрд╕реНрдЯрд░реЛрдВ рд╕реЗ рд╕рд╣рдорддред рдЙрд╕ рдмрд┐рдВрджреБ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЬрд╣рд╛рдВ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рдЙрд╕ рдмрд┐рдВрджреБ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ catch рдХреЛ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╕рдВрд░рдЪрдирд╛ рд╡рд╛рд▓рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рджреЛрдиреЛрдВ error.response рдФрд░ JSON.stringify(error) рдХрд╛рд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрд╡рдпрдВ рддреНрд░реБрдЯрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред https://github.com/axios/axios#handling -errors рдкрд░ рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЗрд╕ рдкрд░ рдмрд┐рд▓реНрдХреБрд▓ рдЬреНрдЮрд╛рдирд╡рд░реНрдзрдХ рдирд╣реАрдВ рд╣реИред

рдПрдХ рднрдпрд╛рдирдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдм рдХрд▓рд╛рдмрд╛рдЬреА рдХрд░рдирд╛ 2019 рдореЗрдВ рд╢рд░реНрдордирд╛рдХ рд╣реИред рдпрд╣ 1990 рдореЗрдВ рд╢рд░реНрдордирд╛рдХ рд╣реЛрддрд╛ред рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдЬреЗрдПрд╕ рд▓реЛрдЧ, рдЕрдкрдиреЗ рдЦреЗрд▓ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдПрдВред рдХреБрдЫ рдПрдкреАрдЖрдИ рдбрд┐рдЬрд╝рд╛рдЗрди рд╕реАрдЦреЗрдВ рдФрд░ рдЕрдкрдиреЗ 'рд░рдЪрдирд╛рддреНрдордХ рдирд┐рд░реНрдгрдпреЛрдВ' рдХреА рдкрд╣рдЪрд╛рди рдХрд░реЗрдВ, рд╣рдЬрд╛рд░реЛрдВ рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдирдЧрд┐рдирдд рдШрдВрдЯреЗ рдПрдХ рдЧрдбрд╝рдмрдбрд╝реА рдХреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ рдЬрд┐рд╕реЗ рдЖрдк рдЬрд╛рдирдмреВрдЭрдХрд░ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рд╕рд░реНрдХреБрд▓рд░ рд╕рдВрджрд░реНрднреЛрдВ рд╕реЗ рдЬреВрдЭ рд░рд╣реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рдРрд╕рд╛ рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

try {
// your axios request
} catch (error) {
  const { response } = error;
  const { request, ...errorObject } = response; // take everything but 'request'
  res.status(response.status);
  return res.json(errorObject); // or use 'return res.json(response.data.error);' then you don't need to omit the 'request'
}

рд╕рд░реНрдХреБрд▓рд░ рд╕рдВрджрд░реНрднреЛрдВ рд╕реЗ рдЬреВрдЭ рд░рд╣реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рдРрд╕рд╛ рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

try {
// your axios request
} catch (error) {
  const { response } = error;
  const { request, ...errorObject } = response; // take everything but 'request'
  res.status(response.status);
  return res.json(errorObject); // or use 'return res.json(response.data.error);' then you don't need to omit the 'request'
}

рдзрдиреНрдпрд╡рд╛рдж рднрд╛рдИ! рдпрд╣ рдХреЛрдб рдореЗрд░реЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╕рдорд╕реНрдпрд╛ "lib/core/enhansError" рдкрд░ рд╣реИред рдЕрдиреБрд░реЛрдз рд╡рд╕реНрддреБ рддреНрд░реБрдЯрд┐ рдореЗрдВ рдЬреЛрдбрд╝ рджреА рдЧрдИ рд╣реИред рдЙрддреНрддрд░ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЬреЛрдбрд╝рдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рджрд╛ рдЖрдзрд╛рд░рд┐рдд рдПрдкреАрдЖрдИ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ (рдЕрдиреБрд░реЛрдз рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд╣рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рддреНрд░реБрдЯрд┐ рдФрд░ рджреВрд╕рд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрддрд╛ рд╣реИ)ред рд▓реЗрдХрд┐рди рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ https://github.com/geoblink/axios/pull/1/files
рдпрджрд┐ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рдЧрддрд╛ рд╣реИ рддреЛ рдореИрдВ рдореБрдЦреНрдп рд╢рд╛рдЦрд╛ рдореЗрдВ рдЬрдирд╕рдВрдкрд░реНрдХ рдЦреЛрд▓ рд╕рдХрддрд╛ рд╣реВрдВ (рдореИрдВ рдЗрд╕реЗ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рд╕рдорд╕реНрдпрд╛ рдмрдВрдж рд╣реЛ рдЧрдИ рд╣реИ)

рдЖрдк рдлрд╝рдВрдХреНрд╢рди рд░реИрдкрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЖрдк рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╕рдордп рд╣рд░ рдмрд╛рд░ рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗ

const api = async (uri, data) => {
  try {
    const { data: response } = await axios({
      url: domain + uri,
      method: 'POST',
      data,
    });

    return response.data;
  } catch (error) {
    throw error.response.data;
  }
};

рдЖрдк рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдПрдХ рдЯрд╛рдЗрдордЖрдЙрдЯ рдорд╛рд░ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдХрд┐ рддреНрд░реБрдЯрд┐ рдореЗрдВ 'рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛' рдореМрдЬреВрдж рд╣реИ рдпрд╛ рдирд╣реАрдВ

axios.get()
.then(function(done) {
   //fine and can get done.data
})
.catch(function(err) {
  //catch the error, check it has a response object with lodash 
  if(_.has(err, 'response') {
     console.log(error.response.status);  
     console.log(error.response.data);
 } 
 else {
    console.log("Most likely a server timeout or an internet connection error");
    console.log("error response property is undefined")
 }
}); 

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рдж

"рддреНрд░реБрдЯрд┐.рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдореИрдВрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдХреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдореЗрд░реЗ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдиреЗ рддреНрд░реБрдЯрд┐ 500 тАЛтАЛрд▓реМрдЯрд╛ рджреАред

рджреЗрд╡ рдЙрдкрдХрд░рдг рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдЯреИрдм

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдб: 500
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд┐рдХрд╛рдп:

{
  "error": {
    "statusCode": 500,
    "name": "Error",
    "message": "read ETIMEDOUT",
    "code": "ETIMEDOUT",
    "errno": "ETIMEDOUT",
    "syscall": "read",
    "stack": "Error: read ETIMEDOUT\n    at exports._errnoException (util.js:1050:11)\n    at TCP.onread (net.js:582:26)"
  }
}

рдХреНрд░реЛрдо рдХрдВрд╕реЛрд▓ рддреНрд░реБрдЯрд┐:

Uncaught (in promise) Error: Request failed with status code 500
    at createError (createError.js:15)
    at settle (settle.js:18)
    at XMLHttpRequest.handleLoad (xhr.js:77)

рд╕рдВрд╕реНрдХрд░рдг

"рдЕрдХреНрд╖": "^0.15.3"

рдореЗрд░рд╛ рднреА рдпрд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИ...

рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ:

"рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рддреНрд░реБрдЯрд┐) рд╕реЗ рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рддреНрд░реБрдЯрд┐.рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛) рдХреЛ рдХреИрдЪ рдореЗрдВ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВред"

рдкрдХрдбрд╝рдиреЗ рдореЗрдВ рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (error.response.data) рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд┐рдпрд╛ред

axios.interceptors.response.use(null, error => {
рд╡рд╛рдкрд╕реА рддреНрд░реБрдЯрд┐ред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛;
});

getClients: async (рд░рд╛рдЬреНрдп) => {
рдХреЙрдиреНрд╕реНрдЯ рд░реЗрд╕ = рдкреНрд░рддреАрдХреНрд╖рд╛ axios.get( ${BASE_API}/clients );
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('рд░реЗрд╕', рд░реЗрд╕);
рдЕрдЧрд░ (рд░реЗрд╕) {
State.commit ("рд╕реЗрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ", res.data);
}
}

рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк

/**
 * Whenever error.message is accessed we want to se the full API error message (JSON) if it's present
 * not just some generic http status code + message
 * see https://github.com/axios/axios/issues/960 for context
 *
 * <strong i="6">@param</strong> axios
 */
export function extractAPIErrorResponse(axios: AxiosInstance) {
    axios.interceptors.response.use(undefined, function (error: AxiosError) {
        (error as any).originalMessage = error.message;
        Object.defineProperty(error, "message", { get: function () {
            if (!error.response) {
                return (error as any).originalMessage;
            }
            return JSON.stringify(error.response.data);
        }});
        return Promise.reject(error);
    })
}

рдХреЛрд╢рд┐рд╢{
рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред $axios .....
}рдкрдХрдбрд╝реЛ(рдИ)
{
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рдИ)

}

axios.get("https://......") 
     .then( response => {
          return response
}).catch( () => {
         store.dispatch("errorComponentMethod")   // if there's an error, method is dispatched
})
//////////////////////////////////////
actions : {
      errorComponentMethod(){
              router.push("/errorComponent")     // method routes to error component
      }
}

рдмрд╣реБрдд рдмрд╣реБрдд рд╢реБрдХреНрд░рд┐рдпрд╛ ! рдмрд╣реБрдд рдорджрдж рдХреА!

рдЕрднреА рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рдХреНрд░реЛрдо рдбреАрдмрдЧрд░ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рд╣реА рд╣реИ рд▓реЗрдХрд┐рди axios рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╕рд╛рдорд╛рдиреНрдп "Request failed with status code 403" рд▓реМрдЯрд╛рддрд╛ рд╣реИ

рдореБрдЭреЗ рдЕрднреА рднреА рдпрд╣ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднреНрд░рдорд┐рдд рд╣реВрдВред рдореИрдВрдиреЗ рдЗрд╕реЗ рдкрдХрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдКрдкрд░ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд╣реИрдВ - рд▓реЗрдХрд┐рди рдЬрдм рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ рддреЛ рдЕрдХреНрд╖ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИ?
try{ const res = await axios.get("someurl"); return res; } catch(e) { console.log(e); }
res рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ, рднрд▓реЗ рд╣реА рд╕рд░реНрд╡рд░ рдЗрд╕рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд╛рдкрд╕ рднреЗрдЬ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпреЛрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдореИрдВ рдЙрд╕ рдбреЗрдЯрд╛ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛... рдХреНрдпреЛрдВ ??

**рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореЗрд░реА рдмрдЧ рдорд┐рд▓реА - рдореЗрд░реЗ рд▓рд┐рдП axios рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдЧрд▓рдд рдирд╣реАрдВ рд╣реИред рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рджреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдиреАрдЪреЗ рджреЗрдЦреЗрдВред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдореЗрд░реЗ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рддреНрд░реБрдЯрд┐ рдбреЗрдЯрд╛ рдХреЛ рдПрдХреНрд╕рд┐рдпреЛрд╕ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рднреЗрдЬ рд░рд╣реЗ рдереЗ рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╣рдореЗрд╢рд╛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛ рд░рд╣рд╛ рдерд╛ред

@HoogsterInc рдпрд╣рд╛рдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рджреЗрдЦреЗрдВ
рдЖрдк рдРрд╕рд╛ рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

try {
   axios.get(...)
} catch (error) {
   if (error.reponse) {
      // http status 4x, 5xx
   } else {
      // network error like timeout, connection refused etc...
   }
}

@konstantinblaesi рдХреА рдорджрдж рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж - рдореИрдВрдиреЗ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд▓рд┐рдпрд╛ред

рдореЗрд░реЗ рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдХрд┐ рдЕрдЧрд░ рд╡реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддреНрд░реБрдЯрд┐ рдХреЛрдб рднреЗрдЬрдиреЗ рдХреЗ рд╕рд╛рде рдЕрдирдзрд┐рдХреГрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рддреНрд░реБрдЯрд┐ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЧреБрдЬрд░ рд░рд╣рд╛ рдерд╛ рдЬрдм рддреНрд░реБрдЯрд┐ рдПрдХ рдЕрдирдзрд┐рдХреГрдд рдХреЛрдб рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреА ... рдЖрд╣ ... рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рдмреБрд░реА рдЧрд▓рддреАред рддреЛ рдЕрдирдзрд┐рдХреГрдд рддреНрд░реБрдЯрд┐ рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдХреЗ рдмрд╛рдж рдореИрдВрдиреЗ Promise.reject(error) рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛; - рдЗрд╕рд╕реЗ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рдФрд░ рддреНрд░реБрдЯрд┐ рдбреЗрдЯрд╛ рдЕрдм рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдЖ рдЧрдпрд╛ред

рдЖрдк err.toJSON() рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

catch((err) => {
    console.log(err.toJSON()); // Return error object
});

https://github.com/axios/axios#handling -errors

(рд╡реИрд╢реНрд╡рд┐рдХ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ)

main.js . рдореЗрдВ

import axios from 'axios'

var instance = axios.create(
 { validateStatus: function (status) {
    return status < 600; #you can change this with another value
  }
 });

рдпрд╛
(рд╡рд┐рд╢реЗрд╖ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ)

  axios.post('/formulas/create', {
       name: "",
       parts: ""
  }, { validateStatus: function (status) {
          return status < 600; // Reject only if the status code is greater than or equal to 500
        }})
    .then( 
   (response) => { console.log(response) },
   (error) => { console.log(error) }
   );

Axios рдФрд░ 500 рддреНрд░реБрдЯрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдбреЗрдЯрд╛ рдкрдХрдбрд╝реЗрдВ

const log = console.log;

  updateData(options = {}, flag = false){
    let url = `/opapi/appDownloadGuide/update`;
    let message = 'цЫ┤цЦ░цИРхКЯ!';
    let errorMessage = 'цЫ┤цЦ░хд▒ш┤е!';
    if (flag) {
      message = 'ц╖╗хКацИРхКЯ!';
      errorMessage = 'ц╖╗хКахд▒ш┤е!';
      url = `/opapi/appDownloadGuide/add`;
    }
    axios
    .post(url, options)
    .then(res => {
      // тЭУЁЯдФя╕П500 , хЬиш┐ЩщЗМцЛжф╕Нф╜ПхСАя╝Я
      log(`res`, res, res.status);
      return res.data;
    })
    .then(json => {
      const {
        code,
        success,
        data,
        errorCode,
        errorHint,
      } = json;
      if(code === 200) {
        this.$message({
          type: 'success',
          message,
        });
        this.init();
      } else{
        this.$message({
          type: 'error',
          message: `${errorMessage}: ${errorHint ? errorHint : ""}`,
        });
      }
    })
    .catch(err => {
      // ЁЯСМхЬиш┐ЩщЗМцЛжцИк error data!
      log(`error.response`, err.response);
      const {
        data,
        status,
        statusText,
      } = err.response;
      this.$message({
        type: "error",
        message: `${statusText}-${status}: ${data || ""}`,
        // message: "ф╕НшГ╜щЗНхдНхИЫх╗║",
      });
      console.error(`500 err`, err);
    });
  },

https://stackoverflow.com/questions/38798451/how-to-catch-and-handle-error-response-422-with-redux-axios

рдореЗрд░реЗ рдкрд╛рд╕ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИред рдЗрд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗ:

axios.post('/formulas/create', {
  name: "",
  parts: ""
})
.then(response => { 
  console.log(response)
})
.catch(error => {
    console.log(error.response)
});

_ console.log(error) рд╕реЗ console.log(error.response) рдореЗрдВ catch _ рдореЗрдВ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВред

рдЖрдк рд╡реИрд╢реНрд╡рд┐рдХ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ error.response рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдорд╕реНрдпрд╛ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм console.log рддреНрд░реБрдЯрд┐ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореБрджреНрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдВрд░рдЪрдирд╛ рдирд╣реАрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ .response рд╕рдВрдкрддреНрддрд┐ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддреА рд╣реИред

рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛

@ рдЧреЛрдкрд╛рд▓-рдЬреА рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИред

@ рдЧреЛрдкрд╛рд▓-рдЬреА рд╣рд╛рдБ рд╡рд╣реА рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдореБрдЭреЗ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред

рдореИрдВ рдПрдХреНрд╕рд┐рдпреЛрд╕ 0.19.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВрдиреЗ @konstantinblaesi рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЬреЛрдбрд╝рд╛:

рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк

/**
 * Whenever error.message is accessed we want to se the full API error message (JSON) if it's present
 * not just some generic http status code + message
 * see https://github.com/axios/axios/issues/960 for context
 *
 * <strong i="9">@param</strong> axios
 */
export function extractAPIErrorResponse(axios: AxiosInstance) {
    axios.interceptors.response.use(undefined, function (error: AxiosError) {
        (error as any).originalMessage = error.message;
        Object.defineProperty(error, "message", { get: function () {
            if (!error.response) {
                return (error as any).originalMessage;
            }
            return JSON.stringify(error.response.data);
        }});
        return Promise.reject(error);
    })
}

рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛, рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж @konstantinblaesi ! рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдПрдХреНрд╕рд┐рдпреЛрд╕ рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдРрд╕рд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ - рдорд╛рдирдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдореВрд▓ рддреНрд░реБрдЯрд┐ рдХреЗ "рд╕рдВрджреЗрд╢" рднрд╛рдЧ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рд╣реИ, рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ!

рдмрд╕ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рдРрдк рдореЗрдВ, рдореЗрд░рд╛ рд╕рд░реНрд╡рд░ 400 рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛ рд░рд╣рд╛ рд╣реИ (рдЬреЛ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП):

% curl -X POST http://my-server/api -d '{"foo": "bar"}'
{"status": 400, "message": "missing param XYZ"}

рдФрд░ рдЗрд╕ рдлрд┐рдХреНрд╕ рдХреЗ рдмрд┐рдирд╛, рдореБрдЭреЗ Axios рд╕реЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдорд┐рд▓рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ name , stack , config (рдЬрд┐рд╕рдореЗрдВ рдореВрд▓ рдЕрдиреБрд░реЛрдз рд╣реИ), рдФрд░ рдХреЛрдИ "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛" рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐ рдореЗрдВ рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рд╣реА message рд╕рдВрдкрддреНрддрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИред

рдЗрд╕ рдлрд┐рдХреНрд╕ рдХреЗ рдмрд┐рдирд╛ рдХреЛрдИ "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛" рд╕рдВрдкрддреНрддрд┐ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд▓рд╛рдЗрди 1171 рдХреЗ рдЖрд╕рдкрд╛рд╕ axios.js рдореЗрдВ settle рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ:

        module.exports = function settle(resolve, reject, response) {
          var validateStatus = response.config.validateStatus;
          if (!validateStatus || validateStatus(response.status)) {
            resolve(response);
          } else {
            reject(createError(
              'Request failed with status code ' + response.status,
              response.config,
              null,
              response.request,
              response
            ));
          }
        };

рдФрд░ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рддреНрд░реБрдЯрд┐ рдмрдирд╛рддреЗ рд╕рдордп рдпрд╣ response.message рд╕реЗ рдирд╣реАрдВ рдЧреБрдЬрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЗрд░реЗ рдРрдк рдореЗрдВ рдореБрдЭреЗ error.response рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣реА рд╣реИ, рдРрд╕реА рдХреЛрдИ рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ - рдореБрдЭреЗ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡реИрд╕реЗ рднреА рдЙрдкрд░реЛрдХреНрдд рдлрд┐рдХреНрд╕ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рддреНрдпрд╛рдкрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред

рдХреЛрдб:

axios.post('/formulas/create', {
       name: "",
       parts: ""
})
.then( 
  (response) => { console.log(response) },
  (error) => { console.log(error) }
);

рдХрдВрд╕реЛрд▓ рд▓реЙрдЧ рдЖрдЙрдЯрдкреБрдЯ

Error: Request failed with status code 422
    at createError (app.js:6765)
    at settle (app.js:29489)
    at XMLHttpRequest.handleLoad (app.js:6600)

рдиреЗрдЯрд╡рд░реНрдХ рдЯреИрдм рдЖрдЙрдЯрдкреБрдЯ
{"рдирд╛рдо": ["рдирд╛рдо рдлрд╝реАрд▓реНрдб рдЖрд╡рд╢реНрдпрдХ рд╣реИред"], "рдкрд╛рд░реНрдЯреНрд╕": ["рдкрд╛рд░реНрдЯреНрд╕ рдлрд╝реАрд▓реНрдб рдЖрд╡рд╢реНрдпрдХ рд╣реИред"]}

рдореБрдЭреЗ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ JSON рдлреЙрд░реНрдо рд╕рддреНрдпрд╛рдкрди рд╢рд╛рдорд┐рд▓ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЗрд░реЗ рдиреЗрдЯрд╡рд░реНрдХ рдЯреИрдм рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИ, рдореБрдЭреЗ рдЬреЗрдПрд╕ рдХреИрдЪ рдЖрдЙрдЯрдкреБрдЯ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ?

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднреА рдХреЛрд╢рд┐рд╢ рдХреА:

axios.post('/formulas/create', {
  name: "",
  parts: ""
})
.then(response => { 
  console.log(response)
})
.catch(error => {
    console.log(error)
});

рд╡рд╣реА рдкрд░рд┐рдгрд╛рдо

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдореЗрд░реЗ рдЬреИрд╕реЗ рд╣реА рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд▓реЛрдЧреЛрдВ рдХреЛ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред
https://laracasts.com/discuss/channels/vue/issues-with-axios-catch-method

  • рдПрдХреНрд╕рд┐рдпреЛрд╕ рд╕рдВрд╕реНрдХрд░рдг: ^0.16.2
  • рд╡реАрдпреВрдЬреЗрдПрд╕ 2.3.4
  • рд╡реНрдпреВ-рдЯреЗрдореНрдкрд▓реЗрдЯ-рдХрдВрдкрд╛рдЗрд▓рд░ 2.3.4
  • рд▓рд╛рд░рд╡реЗрд▓-рдорд┐рд╢реНрд░рдг
  • рдкрд░реНрдпрд╛рд╡рд░рдг: рдиреЛрдб v6.4.0, рдХреНрд░реЛрдо 58, рдореИрдХ рдУрдПрд╕рдПрдХреНрд╕ 10.12.4

axios.post('/formulas/create', {
рдирд╛рдо: "",
рднрд╛рдЧ: ""
})
редрдлрд┐рд░(
(рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛) => {рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛)},
).рдХреИрдЪ (рдЧрд▓рддреА => рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (err.response.data)});

error.response рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ, рдпрд╣ рдХрдВрд╕реЛрд▓ рд▓реЙрдЧ рдореЗрдВ [рдСрдмреНрдЬреЗрдХреНрдЯ, рдСрдмреНрдЬреЗрдХреНрдЯ] рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдЧрд╛ред
рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ error.reposne.data рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рджреЗрдЦреЗрдВ: https://itnext.io/javascript-error-handling-from-express-js-to-react-810deb5e5e28

@chandukasm рд╣рд╛рдБ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ _not_ рдПрдХ error.response - рдпрд╣ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ, рднрд▓реЗ рд╣реА рдЕрдиреБрд░реЛрдз рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ред рдКрдкрд░ рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рднреА рджреЗрдЦреЗрдВ; рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореМрдЬреВрдж рд╣реЛрдиреЗ рдкрд░ рднреА рд╕рдВрджреЗрд╢ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрджреЗрд╢ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд)ред

error.response рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ, рдпрд╣ рдХрдВрд╕реЛрд▓ рд▓реЙрдЧ рдореЗрдВ [рдСрдмреНрдЬреЗрдХреНрдЯ, рдСрдмреНрдЬреЗрдХреНрдЯ] рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдЧрд╛ред
рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ error.reposne.data рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рджреЗрдЦреЗрдВ: https://itnext.io/javascript-error-handling-from-express-js-to-react-810deb5e5e28

рдпрджрд┐ рдЖрдк рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ рдкрд░ [рдСрдмреНрдЬреЗрдХреНрдЯ, рдСрдмреНрдЬреЗрдХреНрдЯ] рджреЗрдЦрддреЗ рд╣реИрдВ рддреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреНрд░реБрдЯрд┐ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП JSON.stringify(error.response) рдХрд░реЗрдВред

рдХреЛрдИ error.response рд╡рд╕реНрддреБ рдирд╣реАрдВ рд╣реИред

return this.$axios
  .post(postUrl, payload, { responseType: 'json' })
  .then(
    (response) => {
      this.message = `RESP: ${JSON.stringify(response)}`;
    },
    (reason) => {
      this.message = `REAS: ${JSON.stringify(reason)}`;
    }
  )
  .catch((err) => {
    this.message = `CATCH: ${JSON.stringify(err)}`;
  });

рдкреЗрд▓реЛрдб рдореЗрдВ HTTP 422 рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдПрдХ рдЦрд░рд╛рдм рдорд╛рди рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдкреЛрд╕реНрдЯрдореИрди рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ (LB4) JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкреВрд░реА рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдЧрд▓рдд рдерд╛, рд▓реЗрдХрд┐рди axios рдореЗрдВ, error.response рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИред .

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

reggi picture reggi  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

altruisticsoftware picture altruisticsoftware  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ghost picture ghost  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

tbaustin picture tbaustin  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

StefH picture StefH  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ