接口状态码为200,但响应数据还没加载出来,拿不到接口返回的数据?

img

img


当我点击导出按钮时,调用导出接口,接口状态码为200,但响应数据为空,这是控制台会直接打印一个空对象,过了6、7秒之后,响应数据才显示,但我已经拿不到响应数据了,即使用延时器延迟console.log也不得

代码:
1、exportSelectedRop(values).then(value => {

console.log('value', value);
});
2、//导出
export async function exportSelectedRop(data) {
return await request.post(desk/exportRop, {paramsdata, responseType: 'blob' });
}

响应标头:

Access-Control-Allow-Credentials: true
Access-control-Allow-Headers: User-Token, Authorization, Content-Type, Depth, User-Agent, X-File-Size, X-Requested-With, X-Requested-By, If-Modified-Since, X-File-Name, X-File-Type, Cache-Control, Origin
Access-control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE
Access-Control-Allow-Origin: http://localhost:3010
Access-Control-Expose-Headers: *
content-disposition: attachment;filename="rop%E5%AF%BC%E5%87%BA.xls"
Content-Type: multipart/form-data;charset=UTF-8
Date: Wed, 21 Sep 2022 10:32:00 GMT



Transfer-Encoding: chunked

请求标头:

Accept: /
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive
Content-Length: 0
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Host:
Origin: http://localhost:3010
Referer: http://localhost:3010/
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/105.0.0.0 Safari/537.36

少量数据导出时,可以拿到后端返回:

img

二次封装axios时设置了请求超时时间,当请求时间等于我们设置的超时时间,就返回一个空对象;所以超过了超时时间即使请求成功且有数据返回,我们的.then拿到的都是一个空对象

200 只是说这个接口调用成功了,具体根据接口文档抓包定位,。

1、可能接口返回的 Data 里没有捞数据,而前端未做兼容做个缺省页什么的。

2、可能后端接口返回字段值与接口约定不一致,前端没取到可用展示的字段参数。

3、可能后端返回字段与接口文档约定一致,但前端取值错误。

4、若是展示的是后台接口返回的图片地址,排查一下图片地址是否可以正常打开,若公司分内外网的话很容易出现这样的情况。

exportSelectRop的定义发出来看看。另外这个导出接口约定发的是什么数据格式?文件流吗