一、 场景
在公司做后台管理项目的时候,客户要求某一数据列表要有 勾选导出 和 全部导出,在我添加完 勾选功能导出的时候,控制台报了这样一个错误。
二、 原因
造成415错误的方式大概有两种:
- 数据请求的 contentType 与后端不一致
- 要发送的数据格式不正确
然后看了自己要传输的 aids 属性格式,一个对象里面包含一个属性名,属性名对应一个array数组,没毛病。
再打开 swaggerUI 确认发送的数据格式,跟后端同事确认了了之后,也没毛病。
三、解决
那既然都没有毛病,可能就是 axios 封装的参数不正确了,然后去 fetch.ts文件中找错误,fetch.ts 上一层是控制层,既然fetch.ts 是早就封装好的,那应该问题不大,我们去控制层dataview.ts层找,果然如此:
/**
* @description 根据查询条件勾选导出数据
* @param {Object} any
*/
export function getExportSelItems(data: any): Promise<{}> {
return Fetch.fetch({
url: API_CONTROLLER + '/ExportSelItems',
method: 'post',
data, // 这个地方看看后端需要的格式是params还是data
responseType: 'arraybuffer' // 如果是导出或者下载格式的,需要加arraybuffer 配置
})
}
至此就解决了,fetch.ts 里是封装好的 axios ,这里的配置,等有空再补上。