为何国内的大厂没有使用 RESTful 接口规范

2021-05-16 20:09:44 +08:00
 dedemao

看了支付宝、微信公众号、钉钉、抖音等开放平台的接口文档,无一例外,都没有使用 RESTful 的风格,都只有 GET 、POST 两种请求方式。

例如:

支付宝开放平台: https://opendocs.alipay.com/apis

微信公众号开发文档: https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html

阿里云: https://help.aliyun.com/document_detail/25483.html?spm=a2c4g.11186623.3.3.75e31067uSqiJe

钉钉开发平台: https://developers.dingtalk.com/document/app/server-api-overview

抖音开发平台: https://open.douyin.com/platform/doc/6848806536383383560

你们的项目有使用 RESTful 接口规范吗,为什么?

3871 次点击
所在节点    问与答
20 条回复
12101111
2021-05-16 20:21:41 +08:00
RESTful 并没有规范, 规范的是 openapi 这样的东西
TomVista
2021-05-16 20:26:16 +08:00
场景不合适

resetful 强调的对资源的不同操作,

你提到的暴露的接口,往往是单独的功能,没有资源关联

参考一下 strip 支付 api,
wellsc
2021-05-16 20:27:48 +08:00
?
Mithril
2021-05-16 20:49:01 +08:00
纯粹的 Restful 是太理想化的模型,但凡你的业务稍微复杂一点,一个页面上的数据你就能搞出来几十个请求。
实际实现上都会做不同程度的妥协的。
renmu123
2021-05-16 21:09:00 +08:00
因为太过理想,不好用
Cbdy
2021-05-16 21:14:18 +08:00
并没有你说的这个东西
jeffh
2021-05-16 21:51:43 +08:00
RESTful 说到底不好管理,一个用户详情接口,带了每个人的用户 id,每个人都不一样。
belin520
2021-05-16 21:51:49 +08:00
反过来,为什么大厂不能有自己的规范呢
zxCoder
2021-05-16 22:07:02 +08:00
因为 restful 不好
huangsen365
2021-05-16 22:20:45 +08:00
因为需求经常改来改去…
ch2
2021-05-16 22:25:17 +08:00
GET 跟 POST 就够用了
ddllzz
2021-05-16 22:27:57 +08:00
有些需求不能抽象成处理资源
oott123
2021-05-16 23:52:58 +08:00
首先不要迷信大厂,大厂搞出来的东西未必是好的。

至于为什么,我觉得是国内大厂这类接口缺乏专门的文档工程师或者技术作者来设计,接口就是码农自己设计的。
optional
2021-05-16 23:55:21 +08:00
restful 抽象并不适合复杂的业务开发,会造成名词与资源量暴涨,反而类似 graphql 抽象成 query/mutation,这个也和 ddd 的 cq 对应
ClericPy
2021-05-17 00:20:55 +08:00
不要迷信 restful, 还是看场景, 有些大厂面向 action 设计也是挺有意思的, 之前 Leader 就让我们借鉴的 slack 那套.

restful 不可否认在对资源对象进行增删改查很具备规范性和语义化, 但是有时候一个对象已经抽象到非常独立无法再细分(或者没有必要再分)的时候, 需要支持的操作可能也不仅仅是增删改查.

比如平时对用户对象元信息简单的增删改查用 restful, 但是如果是一个用户自己的一堆乱七八糟动作却又没有资源变化, 这种情况找不到 resource 去接, 就不如直接语义化地去设计接口, 如一个用户和别人互相放招: user.shoot user.defend. 保留了语义和简洁, 而且只需要 GET 或 POST 就能定义一套接口, 还是比较省力的
unco020511
2021-05-17 10:50:15 +08:00
不要迷信大厂
youmoo
2021-05-17 11:12:24 +08:00
(无脑自荐),虽然和规范无关,这篇 [Spring Boot: 怎么封装一个易用的 RESTful 工具库]( https://mp.weixin.qq.com/s/f9KTzR6f8tW3P2BfrCjrIg) 对封装 RESTful 接口还是有用的。
julyclyde
2021-05-17 12:18:29 +08:00
只能说,对规范,各人有各人自己的理解

举个例子,elasticsearch 的 /_cluster/settings 如果你要修改“其中一部分”内容,用 PUT,感觉对吗?但人家就是那样用的
tonyaiken
2021-05-17 14:15:12 +08:00
我司有公开内部指引,大家都必须按照指引同一风格,内部有委员会统一评审通过才能上线。https://linkedin.github.io/rest.li/modeling/modeling#resource-methods
zjsxwc
2021-05-17 19:51:18 +08:00
楼主你以为接口只是单纯的文件管理吗?
接口不幂等的业务多了去了。

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

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

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

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

© 2021 V2EX