开发 API 的时候 http method 应该使用 PUT、PATCH、DELETE 等协议还得直接用 GET、POST

2024-03-25 21:51:21 +08:00
 Inzufu
如题,
感觉前三者好像更规范些,不过好像很少见有用除 GET 和 POST 外协议的接口。
15821 次点击
所在节点    程序员
142 条回复
lesismal
2024-03-26 16:11:19 +08:00
@momo24672 期待各位反对 POST 一把梭的早日加入 POST 一把梭大家庭!
zhao8681286
2024-03-26 16:29:17 +08:00
@IdJoel 这个是 4 个不同的接口 。。。用 path 传参 你现在能给我第一眼给我找出具体啥是啥吗?
unnamedhao
2024-03-26 16:35:41 +08:00
JSON-RPC 了解下
ljsh093
2024-03-26 16:49:55 +08:00
@Inzufu #8 暴露在历史记录里
willchen
2024-03-26 17:28:47 +08:00
公司用就 get post 吧,如果开源项目还是 restful 一点好
yooomu
2024-03-26 18:45:59 +08:00
基本只用 GET 、POST ,强行 Restful 只会给自己找麻烦,表达能力太弱。我定义接口都是用动词描述,比如/books/getById ,一眼就知道做什么用的
IdJoel
2024-03-26 19:38:03 +08:00
@zhao8681286 https://imgur.com/Sm6VFcL 咱能不能稍微动动脑呢?
Dogtler
2024-03-26 19:38:27 +08:00
虽然是有 rest 规范,但是大部分遇到都是一个 post 搞定所有。
Nich0la5
2024-03-26 20:12:47 +08:00
我司为了解决一楼的问题,统一走 POST 然后在 header 里面有一个 relType:PUT/DELETE/POST 的标识,后端业务处理前先转一下
knives
2024-03-26 20:59:41 +08:00
@Nich0la5 以及各位,X-HTTP-Method-Override 了解一下 ?:doge https://zhuanlan.zhihu.com/p/128052857
hafuhafu
2024-03-26 21:19:15 +08:00
做那种 openAPI 适合用 restful 那一套,比较清晰优雅,别人调用封装也舒服。
写业务确实 get 、post 包圆比较好。
luozic
2024-03-26 21:33:47 +08:00
看资源粒度和接口定义方式,不过为了日志清晰和安全,只用 get post 作为 http 请求,但是在 controller 那里根据操作转义
luozic
2024-03-26 21:34:46 +08:00
@luozic 并且这也是为了方便改 cqrs ,读写分离等后期优化
Inzufu
2024-03-26 21:45:13 +08:00
@thinkershare 我搜了一下 restful 这个关键词,最近一年左右只有我这一个帖子。
而且这种习惯性问题也不像理论性问题,每一个帖子中都会有好的想法可供参考,而且也会随时间的推移而产生更好的答案。
所以我感觉我这贴算不上无意义
xiangyuecn
2024-03-26 23:09:53 +08:00
既然问了,那就

GET + body
dyv9
2024-03-27 06:07:30 +08:00
@lesismal 有些新手设计时就没考虑并发修改,一个表只有一个 update SQL ,也不考虑一些操作实际上只修改几个相关栏位,通通给你把所有非主键栏位放在 set 后面,并发场景数据轻轻地给搞错了。
july1995
2024-03-27 10:00:19 +08:00
@Inzufu #134 我觉得你说的对,这种帖子随着时间的推移,会有不同的答案. 不算重复.
Nich0la5
2024-03-27 10:00:49 +08:00
@knives #130 感谢 虽然我们那个代码用了好多年了懒得动了
YuuuuuuH
2024-03-27 16:10:22 +08:00
@lujiaxing 如果我没理解错的话,你想要表达的业务语义是要查询一个组织内部的所有用户关系,那么接口应该是这样的

POST api/v3/organizations/{OrganizationID}/relationships
lujiaxing
2024-03-28 14:34:40 +08:00
@YuuuuuuH 某个人在某个组织内的用户关系

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

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

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

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

© 2021 V2EX