request.interceptors.response.use(function(response){},function(error){})后端返回結果code===400不經過response,直接跳到error。
當后端返回狀態碼為 400 時直接進入 error 回調而不經過 response 回調,這是因為 axios 默認會將狀態碼不在 200 - 299 范圍內的響應視為錯誤。
解決
1. 修改 validateStatus 配置
你可以通過修改 axios 實例的 validateStatus 配置,來改變對成功狀態碼的判斷邏輯。
import axios from 'axios';// 創建 axios 實例
const request = axios.create({// 修改 validateStatus 配置,允許 400 狀態碼進入 response 回調validateStatus: function (status) {return status >= 200 && status < 500; // 這里將成功狀態碼范圍修改為 200 - 499}
});// 添加響應攔截器
request.interceptors.response.use(function (response) {// 處理響應數據if (response.data.code === 400) {// 處理 code 為 400 的情況console.log('后端返回 code 為 400');}return response;},function (error) {// 處理錯誤console.error('請求出錯:', error);return Promise.reject(error);}
);export default request;
2. 在 error 回調中處理狀態碼 400
如果不想修改 validateStatus 配置,也可以在 error 回調中處理狀態碼為 400 的情況。
import axios from 'axios';// 創建 axios 實例
const request = axios.create();// 添加響應攔截器
request.interceptors.response.use(function (response) {// 處理成功響應return response;},function (error) {// 處理錯誤if (error.response && error.response.status === 400) {// 處理狀態碼為 400 的情況console.log('后端返回 code 為 400');// 可以在這里進行其他處理,如提示用戶等}return Promise.reject(error);}
);export default request;
總結
修改 validateStatus 配置:適用于你希望將更多狀態碼視為成功響應的情況,這樣可以讓這些狀態碼的響應進入 response 回調進行統一處理。
在 error 回調中處理:適用于你只想對特定狀態碼(如 400)進行特殊處理,而不改變 axios 對成功狀態碼的默認判斷邏輯。
你可以根據實際需求選擇合適的解決辦法。 在使用 axios(推測你使用的 request 是 axios 實例)時,當后端返回狀態碼為 400 時直接進入 error 回調而不經過 response 回調,這是因為 axios 默認會將狀態碼不在 200 - 299 范圍內的響應視為錯誤。下面為你詳細分析可能的原因及解決辦法。