ãµãŒããŒããæ€èšŒãšã©ãŒããã£ããããããšããŠããŸãã
ã³ãŒãïŒ
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)
ãããã¯ãŒã¯ã¿ãã®åºå
{"name"ïŒ["ååãã£ãŒã«ãã¯å¿
é ã§ãã"]ã "parts"ïŒ["ããŒããã£ãŒã«ãã¯å¿
é ã§ãã"]}
ãããã¯ãŒã¯ã¿ãã®å¿çã§ããJSONãã©ãŒã æ€èšŒãå«ããªããžã§ã¯ãã衚瀺ãããã¯ãã§ãããJSãã£ããåºåãååŸããŠããããã§ãã
ãŸãã次ã®ããšãè©ŠããŸããã
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
ç§ã¯ãŸã£ããåãç°å¢ãæã£ãŠããŸãã ãããè©ŠããŠïŒ
axios.post('/formulas/create', {
name: "",
parts: ""
})
.then(response => {
console.log(response)
})
.catch(error => {
console.log(error.response)
});
catch
console.log(error)
ããconsole.log(error.response)
ããŸãã
ã°ããŒãã«ã€ã³ã¿ãŒã»ãã¿ãŒã䜿çšããŠã 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);
ããã«ãããäžèšã®ãœãªã¥ãŒã·ã§ã³ãã€ã³ãã³ããŸãã¯çž®å°äžã«JSãã¡ã€ã«ã®æ§æãå°ç¡ãã«ããå Žåã§ããåãçµæãåŸãããŸã:)
.post('ajax/register/otp', this.registerData)
.then(function (response) {
return otpSent(response)
})
.catch(function (error) {
console.log(error.response);
});
@ gopal-gããã¯ç§ã«ã¯å®çŸ©ãããŠããŸããã
ãã®å Žåã@ pedro-massã¯ãµãŒããŒåŽããã®å¿çããªãå¯èœæ§ããããŸãã ç§ã®ã·ããªãªã§ã¯ããšã©ãŒãçºçãããšãã®å¿çã¯JSONã§ãããã error.response
ã䜿çšããŠå¿çãååŸã§ããŸãã
@ gopal-géçºããŒã«ã®[ãããã¯ãŒã¯]ã¿ããèŠãŠãããšãå¿çã確èªã§ããŸãã ãããéããçããªããããã¯401ã§ãã
@ pedro-massã§ãåããšã©ãŒãçºçããŸãã
ãããç§ã®ã³ãŒãã§ã
async function test () {
try {
let res = await axios.get('/xxxxx/xxxx')
} catch (e) {
console.log(e.response) // undefined
}
}
ç§ã«ãšã£ãŠããerror.responseãã®äœ¿çšã¯æ©èœããŸããã ãã®åé¡ã¯ãããŒã¿ããŒã¹ãµãŒããŒãåæããWebãµãŒããŒããšã©ãŒ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)
"axios"ïŒ "^ 0.15.3"
catch
åé¡ããããŸãããªã¯ãšã¹ããè¡ãããåã«ãšã©ãŒãçºçããå Žåã catch
ã¯err.response
ããããã£ããããŸããã ãå¿çããããŸããã ãããã£ãŠã catch
ã¯ãšã©ãŒããã£ããããŸãã @fabiorecifeã®ãããªç¶æ³ã§ããããã¯ãŒã¯é害ã®ããã«å¿çããªãå Žåerr
ãHTTPãšã©ãŒãšããŠæ±ããªãã§ãã ãããããã¯ãåžžã«åœãŠã¯ãŸããšã¯éããŸããã
@alsofronieã§ã¯ãããšãã°413ã®ãããªé£è¡åã®å€±æãåŠçããïŒäºãã«åºå¥ããïŒããã®å¥œãŸããæ¹æ³ã¯äœã§ããïŒ
åæ§ã®åé¡ãçºçããŠããŸã-Chromedevtoolsã¯401
ã衚瀺ããå¿çã¯{"message":"Identity token has expired"}
ãç§ã¯catch( (error) => {...})
-ãããerror.responseã¯ç©ºçœã§ãã ããã¯ã GET
é¢é£ä»ããããå
è¡ããOPTIONS
åŒã³åºãã®ã¹ããŒã¿ã¹ã200
ãããããã©ããçåã«æããŸãã ãã®å Žåã¯ã©ãããã°ããã§ããããŸãã 401
ã¹ããŒã¿ã¹ã³ãŒããååŸããé©åãªå Žæã¯ã©ãã§ããã
@robbiemuãã§ã«ææžåãããŠãããšæããŸãïŒ https ïŒ
@mrchiefããã«æè¬ããŸããããäžåºŠããçŽããŠãã ããã ç§ã®å Žåããã®ãœãªã¥ãŒã·ã§ã³ã¯ã»ãšãã©ã®å Žåã«æ©èœããŸãããçŸåšçºçããŠããåé¡ã¯ã error.response
ãªããžã§ã¯ããååšããããšã§ããããã£ãŒã«ãã¯undefined
ã§ããã response
å
ã®å€ã®åŒã³åºãã§ãã
@paolavnessããã«ã³ã¡ã³ããã代ããã«ãæ°ããåé¡ãéãããšããå§ãããŸãã ãŠã©ããã¯ããŒãºã®åé¡ã¯å€ããããŸããã ãŸãã¯ãStackOverflowã§è³ªåããããšãã§ããŸãã
@mrchiefãããããã¯ééãããŠããŸãããããææããŠãããŠããããšãã ããŸãããã
ç§ãåãåé¡ãæ±ããŠããŸããã æçµçã«ããšã©ãŒã³ãŒãã401ãã403ã«å€æŽãããã¹ãŠãæåŸ ã©ããã«æ©èœããŸããã 空ã®ãšã©ãŒãªããžã§ã¯ãã®çç±ãæšæž¬ããçµæãšããŠçããjavascriptãšã©ãŒã¯ã401ãšã©ãŒã®ããã¥ã¡ã³ãã§èŠã€ãããã®ã¹ããŒãã¡ã³ããšé¢ä¿ããããŸãã
ã[401ãšã©ãŒ]å¿çã«ã¯ãèŠæ±ããããªãœãŒã¹ã«é©çšå¯èœãªãã£ã¬ã³ãžãå«ãWWW-AuthenticateããããŒãã£ãŒã«ããå«ããå¿ èŠããããŸããã
ãããã£ãŠã401ãšã©ãŒãå©çšããå Žåã¯ãwww-authenticateããããŒãã£ãŒã«ããå«ããå¿ èŠããããŸãã ãããå®è¡ããããªãå Žåã¯ã403ãšã©ãŒã䜿çšããŠãã ããã
ãã¯ããããããŸãããã®åé¡ãçºçããŸãããããµãŒããŒã§corsãæå¹ã«ããããã«Apacheæ§æãå€æŽããŠä¿®æ£ããŸããã 以äžã®ãªã³ã¯ãã芧ãã ãã
console.log(JSON.stringify(error))
ã®ã¿ãã¹ãŠã®å¿çããããã°ã§ããŸã
axios.postïŒurlïŒ
.thenïŒïŒresponseïŒ=> {
// ãªã«ã
}ïŒ
.catchïŒïŒresponseïŒ=> {
ifïŒresponse.status == undefinedïŒ{
alertïŒ 'unauthorized'ïŒ
}
}ïŒ
@fabiorecifeã§èª¬æãããŠããã®ãšãŸã£ããåãåé¡ãçºçã
.catch(error=>{
let errorObject=JSON.parse(JSON.stringify(error));
console.log(errorObject);
dispatch(authError(errorObject.response.data.error));
})
ããã«ããã errorObject
å€æ°ã§æåŸ
ãããçµæãçæãããŸãã
@petruscurtuç§ãåãåé¡ãæ±ããŠããŸãïŒããã¯ç§ã«ã¯
ãªããAccess-control-allow-originãªãããã¹ããŒããã®ãããããŸãããããµãŒããŒãèšå®ããŠããŸãã å¿çããããŒã¯åé¡ãããŸãã
解決ããŸããã auth apiã¯ãAccess-control-allow-originãå¿ èŠãªæ£ããããããŒãå¿çããŠããŸããã§ãã
@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ïŒerrorïŒïŒãã§ãã å¿çããããã£ã¯ãããŸãã
ã¢ããããŒãïŒ ããã¯ãµãŒããŒAPIãšã©ãŒã§ãããããããŒã«corsèšå®ããããŸããã§ããã ä»ã¯ããŸããããŸãã
@ juliano-barrosã«æè¬ããŸããããã¯ã¯ãã¹ãªãªãžã³ã®ããã§ããã ããã§ããã¹ãŠã®ajaxãªã¯ãšã¹ããæ£åžžã«æ©èœããŸãã
ãã®çã®ãšã©ãŒã¯ããµãŒããŒã«å°éã§ããªã/ CORSãç¡å¹ã«ãªããã³ã«ã¹ããŒãããŸãã
error.response
ã¯undefined
ãŸãã
ã¡ãã»ãŒãžãã¹ããŒã¿ã¹ãããã³å¿çããŒã¿ãå«ãIntegrationErrorãäœæããŸããããåžžã«åãæ§é ã«åŸããŸãã ãã®ããã«ããŠãaxios / rawãšã©ãŒãåŠçããåãé¢ãããšãã§ããŸãã
Axiosã®çãããããã¯HTTPãšã©ãŒã§ãããšæããŸã... error.response
ãå«ã¿ãŸãã
ããã¯äžèšã®ããã«ç¢ºèªã§ããŸã
æšæ¥ã¯ãã®å·ã®1åšå¹Žã§ããã ãä¿®æ£ããããã®ã§ããããããããšããã®æç¹ã§ãåé¡ãªãããšèŠãªãããã®ã§ããããã
@frostshoxxã ãããããã¯ãåé¡ã§ã¯ãªãããšæããŸãã ç§ã¯ä»ã®äººãšåãåé¡ãçµéšããŠããŸãããäœãèµ·ãã£ãŠããã®ããç解ããŸãããããã¯ãã°ãåé¡ã§ã¯ãªããäžçã®ä»çµã¿ã«ãããªãããšãããããŸãã
æ··ä¹±ããŠãããã¹ãŠã®äººã®ããã«ïŒãããŠãã®åé¡ã1æ³ã«ãªã£ãããšãç¥ã£ãŠïŒãäœãèµ·ãã£ãŠããã®ãããããŠãµãŒããŒã®å¿çãåŸãæ¹æ³ã説æããŸãããã
.catch()
èãå°ã«ééããçç±ã¯ãããããããŸãã ãªã¯ãšã¹ãã®æ©ã段éã§Axiosã§ãšã©ãŒãçºçããããšããããŸãã ããã¯ãCORSãªã¯ãšã¹ãã§çºçããããšããããŸãã Axios OPTIONSã䜿çšã§ããªãå ŽåãAxiosã¯ãããã¯ã«ãªãããµãŒããŒããå®éã«å¿çãåãåãåã«.catch()
ã«éä¿¡ããããããããã®å Žåãå¿çã¯äœ¿çšã§ããŸããã
ãããããDevToolsã«è¡šç€ºãããŠããã®ã§ãå¿çãè¿ã£ãŠããŸããããšèšã人ããããããããŸããã ãµãŒããŒãå¿çããåã«ãAxiosãHTTPãªã¯ãšã¹ããéå§ãããšã©ãŒãçºçããããèªäœãäžæ¢ããŠ.catch()
ã«éä¿¡ããããšããããããããã¯åžžã«åœãŠã¯ãŸããšã¯éããŸããã Axiosã.catch()
é¢æ°ãå®è¡ããŠããæ°ããªç§åŸããµãŒããŒãå¿çãè¿ãå¯èœæ§ããããŸããããã¯ããŸã å¿çããªãã¹ã³ããŠãããããDevToolsã«è¡šç€ºãããŸãã ãã ããAxiosã¯ãã®æç¹ã§é·ãé䜿çšãããŠãããããAxiosã.catch()
é¢æ°ãéå§ããæç¹ã§ã¯ååšããŠããªãã£ãããã response
ã¯äœ¿çšã§ããŸããã§ããã
ãµãŒããŒãã4XXãŸãã¯5XXãšã©ãŒã«é¢ããã¡ãã»ãŒãžãåãåã£ãæ¹ã¯ã幞éã§ãã ãã®ãšã©ãŒãååŸããããã«ãAxiosã¯å®å
šãªãµãŒããŒå¿çãåŸ
æ©ããå¿
èŠããã£ããããéåžžã¯ãµãŒããŒããã®å¿çããããŸãã ãã®ãããªå ŽåãAxiosã¯response
ã䜿çšããŠ.catch()
éä¿¡ããŸãããå¿çããã®å Žã§äœæããç¬èªã®error
ãªããžã§ã¯ãã«ã©ããããŸãã
ãããã£ãŠã 5XXãŸãã¯4XXãšã©ãŒãçºçããå Žåã¯ããµãŒããŒã®å¿çãå©çšã§ããå¯èœæ§ããããŸãããããã¯DEEPã«åãããŠããŸãã
error.response.data.data.message
è©Šããã ããã ããã¯ããµãŒããŒãšã©ãŒãè¿ãLaravelAPIãªã¯ãšã¹ãã§æ©èœããããšã確èªãããŠããŸãã
Laravel以å€ã®ãŠãŒã¶ãŒ-ãµãŒããŒããã³ã¢ã¬ã¹ãã³ã¹ãååŸããã«ã¯ãå°ãªããšãerror.response.data
ã«ç§»åããå¿
èŠããããŸãããã»ãšãã©ã®ãµãŒããŒã¯ãå¿çãå¥ã®data{}
ãªããžã§ã¯ãã«ã©ããããŠãããã«æ·±ãã¬ã€ã€ãŒããæåŸã«ãããã.message
ãããªå¿
èŠãªå¿çããããã£ã«ã¢ã¯ã»ã¹ããŸãã
ãããç§ã¯ç¥ã£ãŠããŸããããšã«ããç§ããŠãŒã¢ã¢ããããã«error.response.data
ãåºåããŠã¿ãŠãã ããã
äœããã®çç±ã§ãAxiosã¯ãšã©ãŒãªããžã§ã¯ãã®console.log(error)
ã®åºåãå€æŽããŸãã ãªã圌ãããããè¡ãã®ãã¯ããããŸãããã代ããã«console.log(JSON.stringify(error))
æžããšããªããžã§ã¯ãå
šäœããã¹ãŠã®æ å
ã§è¡šç€ºãããŸãã
ããã¯ã·ãªã¢ã«åãããJSONã§ãããçŽ2å±€ã®æ·±ãã§èªã¿ã«ãããªããŸãã ãããã£ãŠãå®å šãªãã®ãã³ããŒããŠJSON prettifyerã«è²Œãä»ãããšã©ãŒãªããžã§ã¯ãã®æ§é ã調ã¹ãå¿ èŠããããŸãã
Axiosã§500ãšã©ãŒãŸãã¯400ã¿ã€ããšã©ãŒïŒãŸãã¯å®éã«ã¯ãµãŒããŒãæäŸãããšã©ãŒã³ãŒãïŒãçºçããå Žåãããã¯ãªã¯ãšã¹ããå®äºãããµãŒããŒã®å¿çãå©çšå¯èœã§ããããšãæå³ããŸãã
åé¡ã¯ããããéåžžã«æ·±ãããšã§ããAxiosã¯ãã»ãšãã©ã®äººãerror{}
ãªããžã§ã¯ãã衚瀺ããããã«è¡ãconsole.log(error)
ã®åºåãå€æŽãããããã»ãšãã©ã®äººã¯ãããååšããããšãç¥ããŸããã ããããããã¯ããã«ãããŸãïŒ
@ VSG24ç·!! ããã¯åœãæãçãã§ãïŒD
fwiwã埪ç°åç
§ã«ãã0.18.0ã®JSON.stringify(error)
ç匟ã
ãšã©ãŒæã«ãµãŒããŒã®å¿çãè¿ãã€ã³ã¿ãŒã»ãã¿ãŒãèšå®ããŸãã
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ãšã©ãŒããã£ããããcommitïŒERROR_HAPPENEDãerrorïŒãå®è¡ããŠãvuexã¢ãžã¥ãŒã«ã®ERROR_HAPPENEDãã¥ãŒããŒã·ã§ã³ãå®è¡ããŸãã ããããå¿çãvuexç¶æ ã«èšå®ããããšãããšãå¿çããããã£ãªãã§ãšã©ãŒãçºçããerror.responseãæªå®çŸ©ã«ãªããŸãã
ã¢ã¯ã·ã§ã³ã§console.logïŒerror.responseïŒãå®è¡ãããšãcommitïŒïŒã®åã«å¿çã確èªã§ããŸãã ã§ããããããããvuexã«ãã£ãŠç Žå£ãããŠããŸãã
commitïŒERROR_HAPPENEDãerror.response.dataïŒãå®è¡ããããã¢ã¯ã·ã§ã³ã§401ã§ãããã©ããã確èªããã¹ããŒã¿ã¹ã³ãŒãã«å¿ããŠä»ã®ã³ããããå®è¡ããŸãã ãã®ãã³ã°ãªã³ã°ã¯401ã³ãŒãã§ã®ã¿çºçããããã§ãã 404ã500ã®ãããªä»ã®ãšã©ãŒã¯ãç§ã®ãã¥ãŒããŒã·ã§ã³ã«æž¡ãããŸãã
å£ããŠããªãã Vuexã¯ããã°ã«ãã£ãŠãããããããæ··ä¹±ãããŸããã
ããã€ãã®çš®é¡ã®ãšã©ãŒã¯ãäž»ã«Axiosã€ã³ã¿ãŒã»ãã¿ãŒå
ã§çºçãããããå
¬éãããªãåå ã«ãªããŸãã
ããã€ãã®æŽæ°ïŒ
@AllanPinheiroDeLimaè¿ä¿¡ãé
ããŠç³ãèš³ãããŸãããã誰ãã®ã³ãŒãã®ãã¹ãŠã®å Žæã«ã€ã³ã¿ãŒã»ãã¿ãŒãæžããŠãã人ã¯ããªããšæããŸãã ã³ãŒãããŒã¹ã§ã€ã³ã¿ãŒã»ãã¿ãŒã1åèšè¿°ããããããã«ããŒã¯ã©ã¹ãšããŠäœ¿çšããŸããããã¯1çªã§ãã2çªã®æåã®ã¯ãšãªã¯ã_server error response_ãååŸããã代ããã«try catch
_javascripterror_ãååŸããŸããaxios
ãšã©ãŒã€ã³ã¿ãŒã»ãã¿ãŒã¯ãåºæ¬çã«ãã³ãŒãã£ã³ã°æ¹æ³ãå€æŽãããã倧èŠæš¡ãªã³ãŒãããŒã¹ãå€æŽãããããããªãå Žåã«ããã®åé¡ã解決ããããã«ãŠã§ã¢ãšããŠæ©èœããŸãã
ãããç§ã¯åæããŸãã çã®ããŒã¯ããŒã¯ã䜿çšãã代ããã«ãèªåã®ãµãŒããŒã«çµ±åããããšã§ããã®åé¡ã®è§£æ±ºçãèŠã€ããŸããã ãã®ããã«ããŠããµãŒããŒã®ãšã©ãŒãã€ã³ã¿ãŒã»ããããèªã¿ããããšã©ãŒãããã³ããšã³ãã«éä¿¡ã§ããŸãã ä»ã®ãšããããã®çš®ã®åé¡ã解決ããå¯äžã®æ¹æ³ã ãšæããŸã:)
ç§ã¯ãŸã åãåé¡ãæ±ããŠããŸãã 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":{}}
ãååŸãããŸãããchrome devtoolså¿çAPIããæ£ããå¿çããããŸãïŒ 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ãšã©ãŒãcatchãããã¯ã«ãã£ãŠåŠçãããªãïŒå¿çãªããžã§ã¯ããè¿ããªãïŒçç±ã¯äœã§ããïŒ ã¹ããŒã¿ã¹ã³ãŒã502ã¯DevToolã³ã³ãœãŒã«ã«è¡šç€ºãããŸãããAxiosã«ãã£ãŠåŠçãããŸããã
ããã¯ç§ã®ããã«åããŸããïŒlaravelã®äžæ¢ãã«ããŒïŒabortïŒ500ã 'ã¡ãã»ãŒãž'ïŒïŒ
`` `
.catchïŒerror => {
console.logïŒ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));
ããã¯axiosã§ã¯ãªããµãŒããŒã«ãããŸãã
error.response.statusãæªå®çŸ©ã®å Žåã¯ã€ã³ã¿ãŒãããã§ããããšãããããŸã
JSã®æ¥ç¶ã®åé¡ãŸãã¯æ§æãšã©ãŒ
2019幎1æ2æ¥æ°Žææ¥ã15ïŒ40 Ibrahim Azhar Armar < [email protected]
æžããŸããïŒ
ãã¬ãŒã³ããã¹ãã§ãšã©ãŒãçºçããŸãããšã©ãŒãå€æããã«ã¯ã次ã䜿çšããå¿ èŠããããŸããã
ãªããžã§ã¯ããvar errorObj = JSON.parseïŒJSON.stringifyïŒerrorïŒïŒ;
â
ã³ã¡ã³ãããã®ã§ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/axios/axios/issues/960#issuecomment-450896476 ããŸãã¯ãã¥ãŒã
ã¹ã¬ãã
https://github.com/notifications/unsubscribe-auth/AEETt2r3bt2QCixDlzh4fZvWp_1rPkxuks5u_NMEgaJpZM4N9Ljl
ã
@kgrosvenorãµãŒããŒã¹ã¯ãªãããã¹ãªãŒãç¶æ ã«ããŠã
æ£ãããšã©ãŒã¡ãã»ãŒãžã衚瀺ãããŸãããã³ã³ãœãŒã«ã«ã¯ãã¬ãŒã³ããã¹ãã§è¡šç€ºãããããããµãŒããŒã«é¢é£ããŠããªãããã«èŠãããã©ãŒãããã®åé¡ã®ã¿ã衚瀺ãããŸãã
ãããããªããç§ã¯ãµãŒããŒã§ãããåŒãèµ·ãããŠããå¯èœæ§ããããã®ãç解ããããšããŠããŸããïŒ
ã¿ã€ã ã¢ãŠãã«ãªã£ãŠããå¯èœæ§ãé«ãã®ã§ããšã©ãŒã«ãå¿çããååšãããã©ããã確èªããŠã¿ãŠãã ãã
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")
}
});
Javaããã°ã©ããŒãã500ãšã©ãŒã®ãšã©ãŒã¡ãã»ãŒãžãå±ããŸãããããã®ã¡ãã»ãŒãžãåŠçã§ããŸããã ã ããç§ã¯åœŒã«å¿çãšããŠãšã©ãŒã¡ãã»ãŒãžã§200ã¹ããŒã¿ã¹ãè¿ãããã«é Œãã§ããŸããã圌ã¯ç§ã«è ¹ãç«ãŠãŠããã圌ã®HTTPã¯ã©ã€ã¢ã³ãã¯500ã¹ããŒã¿ã¹ã®ãã¹ãŠã®ã¡ãã»ãŒãžãèŠãŠãããšèšããŸãã 500ã¹ããŒã¿ã¹ã®ãšã©ãŒã¡ãã»ãŒãžãèŠã€ãããªãã®ã§ã圌ã¯ç§ãæãã ãšæã£ãŠããŸãã axiosã500ãšã©ãŒã¡ãã»ãŒãžãåŠçããªãããšã圌ã«èª¬æããã«ã¯ã©ãããã°ããã§ããïŒ
Javaããã°ã©ããŒãã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ã¹ããŒã¿ã¹ã¯é¢ä¿ãªãåŠçã§ããŸãããç§ã®æèŠã§ã¯ããµãŒããŒåŽããæå³çã«è¿ãã®ã¯ããªãæªãç¿æ £ã§ã...
ãŸããerror.responseãæªå®çŸ©ã«ãªã£ãŠããã®ã§ã以äžã®ã³ãŒããè©ŠããŠã¿ãŸãã
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
ãã°ã§ã
ãããšã«ã¹ã¿ãŒã³[email protected]幎2æ28æ¥åšå04:39åéïŒ
ãã®è°è«ãèŠçŽããŸãããã
tl; drïŒ
誰ãã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幎ã«ã¯æ¥ããããã£ãã§ããããçå£ã«JSã®äººã ãããªãã®ã²ãŒã ãã¹ãããã¢ããããŠãã ããã ããã€ãã®APIèšèšãåŠã³ãããªãã®ãåµé çãªæ±ºå®ããããªããæ æã«ç¡èŠããŠããæ··ä¹±ããããã°ããã®ã«æ°å人ã®äººã ã«æ°ãåããªãã»ã©ã®æéãèŠããããšãèªèããŠãã ããã
埪ç°åç §ã«èŠåŽããŠãã人ã®ããã«ãããªãã¯ãã®ãããªããšãããããšãã§ããŸãïŒ
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 / enhanceErrorãã«ãããŸãã ãªã¯ãšã¹ããªããžã§ã¯ãããšã©ãŒã«è¿œå ãããŸãã promiseããŒã¹ã®APIã«ã¯ãã©ã¡ãŒã¿ãŒã1ã€ãããªããããåçã«å¿çãè¿œå ããããšã¯çã«ããªã£ãŠããŸãïŒèŠæ±ã©ã€ãã©ãªã¯ãæåã®ãã©ã¡ãŒã¿ãŒãšããŠãšã©ãŒãè¿ãã2çªç®ã®ãã©ã¡ãŒã¿ãŒãšããŠå¿çãè¿ããŸãïŒã ãã ãããã¹ãŠã®ãªã¯ãšã¹ããè¿œå ããŠãæå³ããããŸããã ã³ãŒãã®å€æŽã¯éåžžã«ç°¡åã§ãhttps://github.com/geoblink/axios/pull/1/files
ãããéèŠã§ãããšæãããå Žåãç§ã¯ã¡ã€ã³ãã©ã³ãã«PRãéãããšãã§ããŸãïŒåé¡ãéããããŠããã®ã§ç§ã¯ãããããŠããŸããïŒ
ãªã¯ãšã¹ããè¡ããã³ã«åŒã³åºãé¢æ°ã©ãããŒãäœæã§ããŸã
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") } });
ããã¯ç§ã®ããã«åããŠããŸãã ããããšã
ç§ã«ãšã£ãŠããerror.responseãã®äœ¿çšã¯æ©èœããŸããã ãã®åé¡ã¯ãããŒã¿ããŒã¹ãµãŒããŒãåæããWebãµãŒããŒããšã©ãŒ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)
ããŒãžã§ã³
"axios"ïŒ "^ 0.15.3"
ãã£ã¡ãäžç·...
ç§ã®çµéšã§ã¯ïŒ
ãcatchã§console.logïŒerrorïŒããconsole.logïŒerror.responseïŒã«å€æŽããŠãã ãããã
catchã®console.logïŒerror.response.dataïŒã§ããŸãæ©èœããŸããã
axios.interceptors.response.useïŒnullãerror => {
error.responseãè¿ããŸãã
}ïŒ;
getClientsïŒasyncïŒstateïŒ=> {
const res = await axios.getïŒ ${BASE_API}/clients
ïŒ;
console.logïŒ 'res'ãresïŒ;
ifïŒresïŒ{
state.commitïŒ "setClient"ã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....ã
} catchïŒeïŒ
{{
console.logïŒeïŒ
}
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
}
}
ãŸããšã«ããããšãããããŸã ïŒ ãšãŠãå©ãããŸããïŒ
ãŸã ãã®åé¡ãçºçããŠããŸãã Chromeãããã¬ãŒã§ã¯ãå¿çã¯æ£ããã§ãããaxiosã¯ä»£ããã«äžè¬çãª"Request failed with status code 403"
è¿ããŸã
ç§ã¯ãŸã ãããæã£ãŠããŠãç§ã¯æ¬åœã«æ··ä¹±ããŠããŸãã äžèšã®ã³ã¡ã³ãããã£ããããããšããŸãããããšã©ãŒãçºçãããšãã«axiosãundefinedãè¿ãã®ã¯ãªãã§ããïŒ
try{
const res = await axios.get("someurl");
return res;
} catch(e) {
console.log(e);
}
ãµãŒããŒãããªãæ©èœããªãã£ãã®ããšããã¡ãã»ãŒãžãå«ãå¿çãéãè¿ããŠããã«ãããããããresã¯æªå®çŸ©ã§ãã ãããŠãç§ã¯ãã®ããŒã¿ã«å°éã§ããŸãã...ãªã??
**ç·šéïŒç§ã®ãã°ãèŠã€ããŸãã-axiosã§ç§ã«ãšã£ãŠäœãæªãããšã¯ãããŸããã ç§ã®ã³ã¡ã³ãã2ã€äžã®ã³ã¡ã³ãã§èŠãŠãã ããã ã€ãŸããã€ã³ã¿ãŒã»ãã¿ãŒã¯ãšã©ãŒããŒã¿ãaxiosãã€ãã©ã€ã³ã«æ»ããªãã£ããããåžžã«æªå®çŸ©ã«ãªããŸããã
@HoogsterIncããã§TypeScriptã®å®çŸ©ãèŠãŠ
ããªãã¯ãã®ãããªããšãããããšãã§ããŸã
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
});
ïŒã°ããŒãã«ã«èšå®ïŒ
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) }
);
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);
});
},
ç§ã¯ãŸã£ããåãç°å¢ãæã£ãŠããŸãã ãããè©ŠããŠïŒ
axios.post('/formulas/create', { name: "", parts: "" }) .then(response => { console.log(response) }) .catch(error => { console.log(error.response) });
_
catch
_ã§console.log(error)
ããconsole.log(error.response)
ããŸããã°ããŒãã«ã€ã³ã¿ãŒã»ãã¿ãŒã䜿çšããŠã
error.response
ã®ã¿ãæåŠããããšãã§ããŸãã åé¡ã¯ãconsole.log
ããšã©ãŒãåºåããããšãããšããªããžã§ã¯ãæ§é ã§ã¯ãªãæååè¡šçŸãåºåãããããã.response
ããããã£ã衚瀺ãããªãããšã§ãã
ç§ã®ããã«åããŠããªã
@ gopal-gããã¯ç§ã«ã¯å®çŸ©ãããŠããŸããã
@ gopal-gã¯ãåãæªå®çŸ©ã®imãååŸããŠããŸãã
Axios0.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 ïŒ Axiosã®ããã©ã«ãã®åäœããã®ããã«ãªã£ãŠããªãçç±ãããããŸãããæšæºã®åäœã¯ãå ã®ãšã©ãŒã®ãã¡ãã»ãŒãžãéšåãåé€ããããšã§ãããããæãéèŠãªéšåã ãšæããŸãã
æ確ã«ããããã«ãç§ã®ã¢ããªã§ã¯ããµãŒããŒã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)
ãããã¯ãŒã¯ã¿ãã®åºå
{"name"ïŒ["ååãã£ãŒã«ãã¯å¿ é ã§ãã"]ã "parts"ïŒ["ããŒããã£ãŒã«ãã¯å¿ é ã§ãã"]}ãããã¯ãŒã¯ã¿ãã®å¿çã§ããJSONãã©ãŒã æ€èšŒãå«ããªããžã§ã¯ãã衚瀺ãããã¯ãã§ãããJSãã£ããåºåãååŸããŠããããã§ãã
ãŸãã次ã®ããšãè©ŠããŸããã
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
- AxiosããŒãžã§ã³ïŒ^ 0.16.2
- VueJS 2.3.4
- Vue-template-compiler 2.3.4
- Laravel-ããã¯ã¹
- ç°å¢ïŒããŒãv6.4.0ãchrome 58ãMac OSX 10.12.4
axios.postïŒ '/ Formulas / create'ã{
ååïŒ ""ã
ããŒãïŒ ""
}ïŒ
ãããããïŒ
ïŒå¿çïŒ=> {console.logïŒå¿çïŒ}ã
ïŒ.catchïŒerr => consol.logïŒerr.response.dataïŒ}ïŒ;
error.responseã¯ãªããžã§ã¯ãã§ãããã³ã³ãœãŒã«ãã°ã«[objectãobject]ãåºåããŸãã
ãšã©ãŒã¡ãã»ãŒãžã«ã¢ã¯ã»ã¹ããã«ã¯ãerror.reposne.dataã䜿çšããå¿
èŠããããŸãã
åç
§ïŒ https ïŒ
@chandukasmã¯ãããããç§ã®å Žåãç§ã¯error.response
æã£ãŠããŸãã-èŠæ±ãéä¿¡ãããå¿çããšã¯ã¹ãã¬ã¹ã§åä¿¡ããããšããŠããããã¯æªå®çŸ©ã§ãã äžèšã®ç§ã®ã³ã¡ã³ããåç
§ããŠãã ããã å¿çãååšããå Žåã§ããã¡ãã»ãŒãžã¯ç¡èŠãããŸãïŒäžè¬çãªã¡ãã»ãŒãžã«çœ®ãæããããŸãïŒã
error.responseã¯ãªããžã§ã¯ãã§ãããã³ã³ãœãŒã«ãã°ã«[objectãobject]ãåºåããŸãã
ãšã©ãŒã¡ãã»ãŒãžã«ã¢ã¯ã»ã¹ããã«ã¯ãerror.reposne.dataã䜿çšããå¿ èŠããããŸãã
åç §ïŒ https ïŒ
console.logã«[objectãobject]ã衚瀺ãããŠããå Žåã¯ã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)}`;
});
ãã€ããŒãã«HTTP422ãããªã¬ãŒããããã®æå³çãªäžæ£ãªå€ãå«ãŸããŠããŸããããã¯ãPostmanã§ã¯æåŸ ã©ããã«æ©èœãããµãŒããŒïŒLB4ïŒã¯å ¥åããŒã¿ãééã£ãŠããå Žæã説æããJSON圢åŒã§å®å šãªãšã©ãŒãè¿ããŸãããaxiosã§ã¯error.responseãªããžã§ã¯ããæªå®çŸ©ã§ãã ã
æãåèã«ãªãã³ã¡ã³ã
ç§ã¯ãŸã£ããåãç°å¢ãæã£ãŠããŸãã ãããè©ŠããŠïŒ
catch
console.log(error)
ããconsole.log(error.response)
ããŸããã°ããŒãã«ã€ã³ã¿ãŒã»ãã¿ãŒã䜿çšããŠã
error.response
ã®ã¿ãæåŠããããšãã§ããŸãã åé¡ã¯ãconsole.log
ããšã©ãŒãåºåããããšãããšããªããžã§ã¯ãæ§é ã§ã¯ãªãæååè¡šçŸãåºåãããããã.response
ããããã£ã衚瀺ãããªãããšã§ãã