前端
$.ajax({
type: 'DELETE',
url: '/user/'+userId,
...
})
后端
@DeleteMapping("{userId}")
public ResponseEntity<Void> deleteUser( @PathVariable String userId){}
此方法适合在springboot中,此方法对PUT请求亦可.
1.SpringBoot已经默认引入了HiddenHttpMethodFilter,可在SpringBoot启动日志里看到该Filter的启动信息。
2.Delete方式有Entity Body,但是该方法传递Entity Body没有明确定义的语义,所以有些服务器实现会丢弃/忽略DELETE请求的entity body,或者拒绝该请求。所以Delete请求中,不要把数据放到Entity Body中。
3.非常坑的一点是,GET没有Entity Body,在ajax中写入data来传参,会直接把参数拼接到url后面。DELETE方式却不可以。所以使用DELETE方式请求时,要手动将参数拼接到url中,而非写到data中。
若为非springboot则用其他的方式:
SpringMVC中对PUT DELETE方式不支持,要加入HiddenHttpMethodFilter,在前端将PUT DELETE请求改为type:“POST”,data:{_method:"DELETE}才可以接收,此处不详细讲述。