如何在Axios的Promise捕获器中获取Express的JSON响应?
如何通过Axios获取Express 403响应中的JSON数据
首先先帮你纠正一个小细节:你的Axios GET请求参数写法有问题,GET请求的查询参数需要放在params配置项里,不然后端大概率接收不到email参数,会影响判断逻辑。
回到你的核心问题——Axios在捕获403这类非2xx状态码的错误时,依然能拿到后端返回的JSON响应,只是数据不在then的result里,而是藏在catch的错误对象的response.data属性中。
修改后的完整调用代码如下:
axios.get('/is-unique-email', { params: { email } }) .then(result => { // 处理200成功响应 console.log('邮箱是否唯一:', result.data.unique); }) .catch(err => { // 先判断是否存在响应对象(比如网络错误时就没有response) if (err.response) { // 这里就能拿到403返回的JSON错误信息 console.log('错误提示:', err.response.data.email); // 也可以直接获取状态码做判断 console.log('响应状态码:', err.response.status); } else { // 处理无响应的情况,比如网络断开、请求超时 console.log('请求失败:', err.message); } });
补充说明:
- Axios默认会把所有HTTP状态码不在2xx范围内的请求触发
catch回调,但这些请求其实已经收到了后端的响应,所以错误对象里会包含response属性,其中data就是后端返回的JSON内容。 - 务必把GET请求的参数放到
params字段中,否则你的后端路由无法获取到email参数,也就无法正确执行邮箱唯一性的判断逻辑。
内容的提问来源于stack exchange,提问作者ton1
相关产品推荐
相关产品推荐

