你们在设计 restful api 时会用 put 和 delete 吗?

2025 年 8 月 15 日
 red13

我一直用 get 和 post ,完全可以满足需求,我不知道是否有业务场景是使用 put 和 delete 会带来好处的,我能想到的就是可以一眼看出接口的作用是什么。使用 put 和 delete 在功能性、安全性、性能上能带来好处吗?

11864 次点击
所在节点    程序员
120 条回复
seedhk
2025 年 8 月 15 日
刚毕业那几年会,PUT DELETE POST GET 分的清清楚楚。现在直接 GET POST 一把嗦
momo2789
2025 年 8 月 15 日
首先 RESTful 约定 URL 表示资源(名词),HTTP Method 表示动作(动词)。所以 post /deleteUser 这种 URL 其实把“动词”塞进了路径,不算是纯正的 RESTful 风格。

功能性上来讲假如上了一定规模,需要用上 API Gateway 。使用标准方法可以让它们自动识别请求意图,从而自动启用缓存、权限、幂等、限流等功能。全用 POST ,那么安全审核无法直接区分这个 POST 是“新增”还是“删除”,只能靠解析 URL 或 Body ,这样更复杂印象性能且容易漏。

RESTful 不是强制约束,也没有标准。所以找到一个符合公司团队都能一致接受就都可以。当然我还是更推荐使用 PUT 和 DELETE ,可以少走一些弯路。
BlueSkyXN
2025 年 8 月 15 日
一般不会
maocat
2025 年 8 月 15 日
直接 post 一把梭哈
jwk345
2025 年 8 月 15 日
国内好多政企部署要求禁用 PUT 、DELETE
Leeeeex
2025 年 8 月 15 日
我们公司的项目在最早的开发手上做过 put 和 delete ,但是后来就没人写了,在搜接口的时候同一个接口出来好几个,第一次看的时候还好奇为啥几个接口名一样项目没报错。
接口名字做好语义化就行了,不需要写固定的方法名
BernieDu
2025 年 8 月 15 日
https://app.swaggerhub.com/apis/portainer/portainer-ee/2.19.3#/ 这是 portainer api ,/custom_templates/{id} 同时有 get , put , delete, 这种场景蛮多的,对服务端来说不用命三个名,对客户端来说一看就知道啥意思,封装方法的时候好封,大家都开心。 单纯满足需求的话 get 和 post 肯定是能满足
flytsuki
2025 年 8 月 15 日
会用,但项目刚上线接口容易调不通 最好还是只用 get 和 post
izneogoud
2025 年 8 月 15 日
产生新内容时用 post ,幂等的更新操作时用 put 。
EastLord
2025 年 8 月 15 日
项目里没用,所以我也不用
loading
2025 年 8 月 15 日
如果写下一个,我准备都用 POST ,GET 也不用了。
pusheax
2025 年 8 月 15 日
之前出过好几个与 PUT 相关的安全漏洞,如 tomcat 的 CVE-2017-12615 和 IIS 的 Webdav 漏洞。
虽说这更多还是应用程序设计的问题,但搞的安全人员有点 PTSD 。水平较差的漏洞扫描器或者入侵检测设备,看到 PUT 就喜欢报安全问题。
因而会有一刀切要求禁用 PUT 的情况。
irisdev
2025 年 8 月 15 日
运维和信息安全不让用
dcsuibian
2025 年 8 月 15 日
PUT 很少用,一般是用 PATCH ,DELETE 肯定很常用了
我挺喜欢 RESTful 的,一般能用 RESTful 的地方我都要 RESTful 。不过自己对 RESTful 的理解也是慢慢加深的,所以也不敢说接口很 RESTful
本质上来说,他这个东西省的就是沟通成本,很清晰
不用 RESTful 当然可以,但是目前没有更好或者平替的方案
MonkeyJon
2025 年 8 月 15 日

问就是全上
jiangzhexin
2025 年 8 月 15 日
@izneogoud 更新内容有 patch method
ryan961
2025 年 8 月 15 日
post 一把梭。对大家都好
nekoneko
2025 年 8 月 15 日
都用, delete 用来删除, put 用来完全更新, patch 用来部分更新
lxh0412
2025 年 8 月 15 日
get post 就好啦,为啥要给自己找事呢
so2back
2025 年 8 月 15 日
post 一把梭,感觉没必要讲究那么多

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1152509

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX