API请求返回404状态码无响应,如何不跳转页面用window.confirm处理?
问题原因
你使用的HTTP请求库(通常是axios)默认配置下,当接口返回4xx、5xx等非2xx状态码时,会直接抛出Promise异常,await 后的代码会直接中断执行,不会进入后续的响应判断逻辑,因此你写的各类 response 判断条件永远无法触发。
解决方案
方案1:用try/catch捕获异常(推荐,无需修改全局配置)
直接包裹异步请求代码,在错误捕获逻辑中判断状态码:
try { const response = await instance.get(`?q=${q}&appid=${appid}`); // 2xx正常状态的业务逻辑写在这里 } catch (error) { // 匹配404状态码 if (error.response && error.response.status === 404) { window.confirm("not found"); console.log("ceren"); } // 其他错误的处理逻辑可以在此补充 }
方案2:修改请求库配置,让404不抛出异常
如果是axios实例,可以在初始化时添加 validateStatus 配置,指定所有状态码都正常返回响应:
const instance = axios.create({ // 你的原有配置 validateStatus: () => true // 所有状态码都走resolve逻辑,不抛错 })
修改配置后就可以直接判断响应状态码:
const response = await instance.get(`?q=${q}&appid=${appid}`); if (response.status === 404) { window.confirm("not found"); console.log("ceren"); }
内容的提问来源于stack exchange,提问作者Ceren Keklik
相关产品推荐
相关产品推荐

