element基于axios封装的request默认发送的是application/json,如果要发送form-data,需要做以下修改
一、在request.js将“application/json;charset=UTF-8”改成“application/x-www-form-urlencoded”
1 | const service = axios.create({ |
2 | headers: { 'Content-Type' : 'application/json;charset=UTF-8' } |
但是这样改,所有的请求都会变成formdata,如果只想改某些接口,可以在接口api加个标识,如下:
1 | export function findCameraPage(data) { |
3 | url: `/pms/hikvision/findCameraPage`, |
二、然后在请求拦截里面,做个判断:
01 | service.interceptors.request.use( |
04 | config.headers[ 'Content-Type' ] = 'application/x-www-form-urlencoded' |
11 | return Promise.reject(error) |
三、发送数据也要改成formData:
02 | let formData = new FormData(); |
04 | formData.append( "page" ,1); |
05 | formData.append( "size" ,10); |
06 | findCameraPage(formData).then(response => { |
08 | if (response.code === 0) { |
上面用传统的new FormData比较麻烦,可以安装qs
然后更改第二步,将data直接批量改为formData格式:
01 | service.interceptors.request.use( |
04 | config.headers[ 'Content-Type' ] = 'application/x-www-form-urlencoded' ; |
05 | config.data = qs.stringify(config.data) |
12 | return Promise.reject(error) |
将第三步的formData省略,还是按照常规传参即可:
07 | if (response.code === 0) { |