شما یه ریکوئست به اندپوینت یه سایتی میزنی و انتظار داری که status code ها رو توی response داشته باشی، مثل این کد:
const axios = require('axios').default.create({ baseURL: 'https://reqres.in' }); app.use('/endpoint', async (req, res, next) => { let response = await axios.get('/some/endpoint'); if (response.status === 404) res.status(404).json({ message: 'not found' }); else if (response.status === 200) res.status(200).json({ data: response.data }); })()
ولی مشکل اینه که اگه status code اون ریکوئستی که میزنی تو رنج ۴۰۰ تا ۵۰۰ باشه (یعنی ارور باشه) هیچ وقت if اجرا نمیشه. چرا؟ چونکه axios توی مواردی که status code بیشتر از ۴۰۰ باشه ارور رو throw میکنه. این یعنی باید try catch بنویسی و توی اون بیای ارور ها رو هندل بکنی. مثل این:
app.use('/endpoint', async (req, res, next) => { try { let response = await axios.get('/some/endpoint'); if (response.status === 200) res.json({ data: response.data }); } catch (error) { if (error.response.status === 404) res.status(404).json({ message: 'not found' }); else res.status(error.response.status).json({ message: 'some kind of error' }); }; });