axios使用delete的坑

2019-10-09  本文已影响0人  猫尾草

1. 问题

  在使用axios的delete请求的时候,将请求参数放在body里面,Content-Type使用application/x-www-form-urlencoded,后台springboot工程用@RequestParam接收不到delete请求传来的参数。

2. 思考

原因1:springboot不具备自动封装delete请求的body的能力?
参考:https://www.jianshu.com/p/f0775b86ba98
以前确实是,现在已经具备了,并且使用postman也是可以正常接收参数的。排除这个可能。
原因2:前端使用的axios的问题?
检查发现之前的axios的delete请求都是伪装成post请求发送的:

export const deleteRequest = (url, params) => {
    let data = params;
    data['_method'] = "DELETE";
    return axios({
        method: 'post',
        url: `${base}${url}`,
        data: data,
        params: data,
        transformRequest: [function (data) {
            let ret = '';
            for (let it in data) {
                ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&';
            }
            return ret.slice(0, -1);
        }],
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
        }
    });
};

确定是axios的问题。

3. 解决方法

  参考:https://blog.csdn.net/qq_42240485/article/details/100515839,要么像上面一样伪装成post,要么使用这里的对body参数做一次包装的方法。

上一篇下一篇

猜你喜欢

热点阅读