ajax put请求 后端springboot接收传参问题

本文详细介绍了在使用RESTful API时,如何通过PUT请求正确传递对象和参数至后端的方法。提供了两种不同的前端实现方案,并解释了后端如何分别通过@RequestBody和@PathVariable接收数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天使用RESTful写接口的时候发现使用put请求后端接收不到对象和参数. 网上的博客解决方式写的千篇一律却没有一个有用… 下面是我最后解决的代码, 希望能帮助到你

上代码

let _self = this;
$.ajax({
    url: '/stu/account',
    type: 'put',
    data: {
        stuUsername: _self.username,                     // 前端传一个对象account和一个参数newpassword
        stuPassword: _self.formChPass.password,
        newPassword: _self.formChPass.newpassword
    },
    success(data_result) {
        // ...
    },
    error() {
       // ...
    }
})

后端接收参数和对象 (对象无需加@RequestBody、参数需要加@RequestParam)
详见 stackoverflow

@PutMapping("/stu/account")
public int updateMyPassword(Account account, @RequestParam String newPassword) {
    // ...
}

还有另一种方式

let _self = this;
let jsondata = {
    stuUsername: _self.username,
    stuPassword: _self.formChPass.password
}
$.ajax({
    url: '/stu/account/' + _self.formChPass.newpassword,  // url中传一个参数
    type: 'put',
    contentType:"application/json",
    data: JSON.stringify(jsondata),                      // data中传一个json格式的数据
    success(data_result) {
        // ...
    },
    error() {
       // ...
    }
})

这时候对象要用@RequestBody 来接收, 参数用@RequestParam的话接收到为null,貌似只能用@PathVariable…

@PutMapping("/stu/account/{newpassword}")
public int updateMyPassword(@RequestBody Account account, @PathVariable(value = "newpassword") String newPassword) {
    // ...
}

over

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值