美文网首页
axios使用delete的坑

axios使用delete的坑

作者: 猫尾草 | 来源:发表于2019-10-09 16:47 被阅读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参数做一次包装的方法。

    相关文章

      网友评论

          本文标题:axios使用delete的坑

          本文链接:https://www.haomeiwen.com/subject/rssapctx.html