springboot支持处理DELETE!

先上解决方法,正确的接口设计如下:

springboot端

@RequestMapping(value = "xxxx/{id}", method = RequestMethod.DELETE)
通过@PathVariable解析id

client端

DELETE http://ip:port/xxxx/123456

成功!

从RESTFul的设计理念和语义来读这个接口:删除xxxx资源,id是...,合情合理!

所以,不是springboot不支持DELETE,而是我们用错了!

把要删除的资源id直接拼在URL中,HTTP方法用DELETE,不需要提交其他参数。通过@PathVariable解析id即可。


解决过程:

学习springboot的过程中一直在用RESTClient调试接口,在调试DELETE方法的时候报错

org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'DELETE' not supported

接口定义:

DELETE  http://ip:port/xxxx/delete

参数通过body提交

尝试修改成

DELETE http://ip:port/xxxx?id=xxx

仍然报同样的错误

查百度,有人说浏览器不支持PUT、DELETE(我调试PUT是成功的);有人说要加filter通过_mothod曲线解决,这也太不RESTFul了。

困惑的时候,突然看到我的PUT接口PUT http://ip:port/xxxx/{id},body提交修改的具体参数和值。再回想下REST API设计标准,答案豁然开朗。

REST API设计标准参考《REST API Design Rulebook》O'REILLY。




你可能感兴趣的:(springboot支持处理DELETE!)