如何看待:不遵循 restful_api 设计,所有的 api 使用 POST 提交

2019-08-26 14:26:34 +08:00
 ikaiguang

把所有的 API 都设计为 POST 提交方式,你们是如何看待的。

懒?

8609 次点击
所在节点    服务器
38 条回复
Cyron
2019-08-26 17:16:03 +08:00
@ikaiguang #11 json api 全用 post 也没问题,时间可以花在命名规范上
westoy
2019-08-26 17:20:54 +08:00
还有就是跨浏览器和避开一些防火墙对 delete、patch、put 的阻断, 你永远不知道真实世界里会出啥妖蛾子

框架里最早提倡 REST 实践的是 rails 2 吧, 但是貌似直到现在 rails 都是通过 POST 传_method 字段来做的
nnqijiu
2019-08-26 17:29:49 +08:00
都用 post
otakustay
2019-08-26 17:49:28 +08:00
总比都用 GET 好,对吧
est
2019-08-26 18:06:42 +08:00
@mcfog 那带 CAPTCHA、2FA 的登入呢?

验证邮箱的 API 呢?

明明一个 资源名字 + 动词就能描述很清晰的东西,非得限定只用 5 个 verb 去套。。这是削足适履。

而且正规的 RESTful 还要区分单数复数的。。这个就是个笑话。章鱼有 3 种复数形式。做 log 统计的时候就想把 RESTful 作者砍死。

对了 RESTful 作者的发明其实就是 Adobe CodeFusion 没啥值得吹的。而且 RESTful 最好的应用也就 WebDAV 了。协议来说其实设计出发点听起来不错,用起来各种问题。性能也不高。
mayne95
2019-08-26 18:09:34 +08:00
谢邀(并没有)
既然楼主用知乎的提问体,那么我就用知乎的回答体。

抛开业务场景谈 API 设计的都是耍流氓(加粗)

规则是个约定俗称的东西,能减少沟通成本,但规则本身也有学习成本。如果 rest 是有 RFC 支持,白纸黑字明文规定的规则。那非常好,大家都按这个来,不会出什么幺蛾子。V 站也不会有人隔三差五的出来讨论 rest 规范。

(不管对不对,先踩一番显得自己很高明的亚子)
像 REST 这种含糊不清的约定本来就是一坨 shit,restful ful ful 风格你懂吗,你的 API 有自己的 freestyle 嘛?真是滑天下之大稽!正如 5 楼所说,rest 不是标准,不是标准,不是标准。API 能在符合 HTTP 协议的情况下运行起来即可。

这个问题就像是,你觉得空格好还是 tab 好。又比如函数式之于面向对象。如果今后 graphql 普及,这个问题还有意义嘛?
拿前朝的剑斩本朝的官?(大雾)

在那个 API 风格混乱的年代,rest 的出现如同指路明灯。大家都按着这个来,减少了混乱,降低了沟通成本。这是值得肯定的。但是随着业务场景逐渐复杂,API 的设计已经没法完全符合 rest 的理念了。花心思去设计一个看起来美好的格式高度统一的 API,不如直接加个接口来的简单。

全用 post 是有缺陷的。举个例子,如果前端要上 service worker,这时候 API 全用 post,请求是没法被拦截并缓存的,也就谈不上什么离线应用。这种场景下用 rest 是保险的。

GitHub 的 API 堪称业界典范,程序员都喜欢。notion 获取数据全用的 post 请求,但这并不妨碍我喜欢它。重要的是产品。

好的 API 是自描述的,能够自洽的,符合直觉的。用户在使用某个接口后,能够推导出其它接口的用法。API 面向的用户群体是程序员,对于程序员来说文档最重要。文档是最好的约定,rest 不 rest 无所谓啦。
mcfog
2019-08-26 21:25:29 +08:00
@est 我说 restful 能做,又没说建议用 restful 做。

如果你不懂怎么在一个 restful 风格的体系里设计符合 restful 风格的 2fa 也好 captcha 也罢我可以和你讨论一下我的想法,但我觉得你肯定没有兴趣

哦对了,我也不喜欢 restful,但喜不喜欢一门技术和是否理解这门技术的优缺点,还有能否理性地讨论一门技术是三件不一样的事情,希望你不会因此错过一些更有价值或是有趣的技术
artandlol
2019-08-26 21:27:20 +08:00
建议用 grpc 吧
akira
2019-08-26 22:13:13 +08:00
文档齐全的 API 就是好 API
dodo2012
2019-08-26 22:20:47 +08:00
@westoy rails 到现在也是按 rustful 来的,所以写习惯 rails 后,写所有其它语言的接口全会自学按 restful,
AngelCriss
2019-08-26 23:08:43 +08:00
不用 http 不就行了
chocotan
2019-08-26 23:13:02 +08:00
从上面的回复来看,不同的人对 restful 理解会出现偏差
那就别用了,全用 POST 吧
chocotan
2019-08-26 23:14:17 +08:00
刚看到二楼...
我的客户连 content-type 都不懂,指望对方懂这些 http method ?
tedzhou1221
2019-08-27 08:13:00 +08:00
我司现状,强制 Post + json 也不知道好不好,但我知道拍板的人不懂技术。
liuxey
2019-08-27 08:33:50 +08:00
能完全参照 RESTful 的有几个,所以也不能 50 笑百,

只要文档清晰, 沟通顺畅,工具好用,HTTP+XML 我也没意见
est
2019-08-27 10:07:54 +08:00
@mcfog 说得好。。。。
switch100
2019-08-27 13:01:46 +08:00
前端就是屁事多,给你 api 非得挑三拣四的,乖乖切页面不就可以了吗,还管到后端来了
StarkWhite
2019-08-27 17:23:30 +08:00
GET, PUT, DELETE 等会对参数转义,调试麻烦,而且浏览器对字符长度限制也比较大,
GraphQL 就是只用 HTTP POST 了,参数内用 query 和 mutation 标识,多简单~
话说大家经常讨论的那个 APIJSON 也跟风全用 HTTP POST 了 /狗头

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

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

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

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

© 2021 V2EX