我将validateStatus添加到axios对象中:
const http=axios.create({
baseURL:'/api',
timeout: 10000,
validateStatus: function (status) {
return status >= 200 && status < 300; // Treat all status codes outside of 2xx as errors
}
})
创建get requeset并使用mock.js进行响应:
x一个一个一个一个x一个一个二个x
和页面。getCurve返回:
export default {
getCurve: config => {
console.log(config)
const urlString = config.url;
const urlObj = url.parse(urlString);
const queryParams = queryString.parse(urlObj.query);
console.log('curve_index', queryParams.curve_index);
// console.log(curve_index,test_id)
let results = [];
let curve1 = [];
let curve2 = [];
let curve3 = [];
for (let i = 0; i < 3000; i++) {
curve1.push(Math.random() * 300)
}
results.push(curve1)
for (let i = 0; i < 3000; i++) {
curve2.push(Math.random() * 500)
}
results.push(curve2)
for (let i = 0; i < 3000; i++) {
curve3.push(Math.random() * 700)
}
results.push(curve3)
console.log(results)
if (queryParams.test_id == '1234') {
if (queryParams.curve_index < 2) {
return {
code: 200,
data: results[queryParams.curve_index],
count_data: 3
}
}
else {
return {
status: 404,
data: results[queryParams.curve_index],
count_data: 3
}
}
}
}
}
当我试图捕捉由axio引起的被拒绝的承诺时,结果是承诺状态仍然是已实现的,因为响应被then()捕捉到了。
getCurve(this.test_info).then(({ data }) => {
console.log('response', data)
}).catch(error=>{
window.alert(error);
});
和日志:
我想知道是我没有用Mock生成正确的404响应,还是我没有正确地使用Axios?
1条答案
按热度按时间4zcjmb1e1#
答案是mockjs实际上发送了一个状态为200的响应,而我在mock中定义的'status'只是在响应的数据中添加了一个'status'属性,根据答案:https://github.com/nuysoft/Mock/issues/501#issuecomment-1442677675我应该使用mock-server来代替。