.vue在调用method为delete时,出现了无法传参的情况

1.vue在调用method为delete时,出现了无法传参的情况:

调用delete api发现想传入的json格式的参数并没有传入成功,如下:

 

 这其实是vue的delete方法和其他post put get方法不一样导致的,需要修改delete传参格式就行了:

 

Vue中 axios delete请求参数踩坑:

vue中axios 的delete和post,put在传值上有点区别:
post和put有三个参数,url,data和config,所以在使用这两个时,可以写成axios.post(api,{id:1}),axios.put(api,{id:1}),但是delete只有两个参数:url和config,data在config中,所以需要写成 axios.delete(api,{data:{id:1}})

如果是服务端将参数当作Java对象(比如json格式)来封装接收则 参数格式为:{data: param}
var param={id:1,name:'zhangsan'}
this.$axios.delete("/ehrReferralObjPro", {data: param}).then(function(response) {
}

 

 

如果服务端将参数当做url 参数 接收,则格式为:{params: param},这样发送的url将变为http:www.XXX.com?a=…&b=var param={id:1,name:'zhangsan'}
this.$axios.delete("/ehrReferralObjPro", {params: param}).then(function(response) {
}

 


axios 数组传值时,我传到后台的是两个字符串数组,但是将参数当成url参数接收时,如果是正常传值,将数组作为一个请求参数传值时,后台接口接收不到匹配的参数,百度之后使用JSON.stringify(),但是使用以后,后台多了一对双引号,最后把后台改成对象封装接收参数,使用的第一种。

下面罗列了vue各个方法的传参方式:

修改vue框架的apis文件夹(一般都是这个文件夹,也可能是其他文件夹)中的api.js文件:
//引入封装好的 axios
import Axios from './axios'

// 实例化:只有一个api服务器请求地址管理
const instance =Axios()

// //vue项目多个不同的服务器请求地址管理
// const instance = Axios.create({
//     baseURL: '/releaseapi'
// })
//
// const externalInstant = Axios.create({
//     baseURL: '/externalApis'
// })

//创建需要的请求方法:get post put delete
//url:请求的接口地址
//params:请求参数
//headers:请求头

export default {
    //创建需要的请求方法:get post put delete
    get(url, params, headers) {
        return instance.get(url, {params, headers})
    },
    post(url, params, headers) {
        return instance.post(url, params, {headers})
    },
    put(url, params, headers) {
        return instance.put(url, params, {headers})
    },
    delete(url, params) {// console.log(url)
        // console.log(params)
        // console.log(headers)
        //正确示例:如果是服务端将参数当作Java对象来封装接收则 参数格式为:{data: param}
        return instance.delete(url, {data: params})
        //正确示例:如果服务端将参数当做url 参数 接收,则格式为:{params: param},这样发送的url将变为http:www.XXX.com?a=…&b=…
        // return instance.delete(url,{params: params})
        //错误示例:下面这是一个错误的传参方式,参数无法被正常的传入给api:
//return instance.put(url, params, {headers})
    }
}

 

posted @ 2024-05-13 18:39  苹果芒  阅读(271)  评论(0编辑  收藏  举报