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

97 天前
 red13

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

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

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

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

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

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

https://ex.noerr.eu.org/t/1152509

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

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

© 2021 V2EX