看了支付宝、微信公众号、钉钉、抖音等开放平台的接口文档,无一例外,都没有使用 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 接口规范吗,为什么?
1
12101111 2021-05-16 20:21:41 +08:00
RESTful 并没有规范, 规范的是 openapi 这样的东西
|
2
TomVista 2021-05-16 20:26:16 +08:00 via Android 1
场景不合适
resetful 强调的对资源的不同操作, 你提到的暴露的接口,往往是单独的功能,没有资源关联 参考一下 strip 支付 api, |
3
wellsc 2021-05-16 20:27:48 +08:00
?
|
4
Mithril 2021-05-16 20:49:01 +08:00 2
纯粹的 Restful 是太理想化的模型,但凡你的业务稍微复杂一点,一个页面上的数据你就能搞出来几十个请求。
实际实现上都会做不同程度的妥协的。 |
5
renmu123 2021-05-16 21:09:00 +08:00 via Android
因为太过理想,不好用
|
6
Cbdy 2021-05-16 21:14:18 +08:00 via Android
并没有你说的这个东西
|
7
jeffh 2021-05-16 21:51:43 +08:00
RESTful 说到底不好管理,一个用户详情接口,带了每个人的用户 id,每个人都不一样。
|
8
belin520 2021-05-16 21:51:49 +08:00 via iPhone
反过来,为什么大厂不能有自己的规范呢
|
9
zxCoder 2021-05-16 22:07:02 +08:00
因为 restful 不好
|
10
huangsen365 2021-05-16 22:20:45 +08:00 via iPhone
因为需求经常改来改去…
|
11
ch2 2021-05-16 22:25:17 +08:00
GET 跟 POST 就够用了
|
12
ddllzz 2021-05-16 22:27:57 +08:00 via Android
有些需求不能抽象成处理资源
|
13
oott123 2021-05-16 23:52:58 +08:00 1
首先不要迷信大厂,大厂搞出来的东西未必是好的。
至于为什么,我觉得是国内大厂这类接口缺乏专门的文档工程师或者技术作者来设计,接口就是码农自己设计的。 |
14
optional 2021-05-16 23:55:21 +08:00 via Android
restful 抽象并不适合复杂的业务开发,会造成名词与资源量暴涨,反而类似 graphql 抽象成 query/mutation,这个也和 ddd 的 cq 对应
|
15
ClericPy 2021-05-17 00:20:55 +08:00 1
不要迷信 restful, 还是看场景, 有些大厂面向 action 设计也是挺有意思的, 之前 Leader 就让我们借鉴的 slack 那套.
restful 不可否认在对资源对象进行增删改查很具备规范性和语义化, 但是有时候一个对象已经抽象到非常独立无法再细分(或者没有必要再分)的时候, 需要支持的操作可能也不仅仅是增删改查. 比如平时对用户对象元信息简单的增删改查用 restful, 但是如果是一个用户自己的一堆乱七八糟动作却又没有资源变化, 这种情况找不到 resource 去接, 就不如直接语义化地去设计接口, 如一个用户和别人互相放招: user.shoot user.defend. 保留了语义和简洁, 而且只需要 GET 或 POST 就能定义一套接口, 还是比较省力的 |
16
unco020511 2021-05-17 10:50:15 +08:00
不要迷信大厂
|
17
youmoo 2021-05-17 11:12:24 +08:00
(无脑自荐),虽然和规范无关,这篇 [Spring Boot: 怎么封装一个易用的 RESTful 工具库]( https://mp.weixin.qq.com/s/f9KTzR6f8tW3P2BfrCjrIg) 对封装 RESTful 接口还是有用的。
|
18
julyclyde 2021-05-17 12:18:29 +08:00
只能说,对规范,各人有各人自己的理解
举个例子,elasticsearch 的 /_cluster/settings 如果你要修改“其中一部分”内容,用 PUT,感觉对吗?但人家就是那样用的 |
19
tonyaiken 2021-05-17 14:15:12 +08:00 via iPhone
我司有公开内部指引,大家都必须按照指引同一风格,内部有委员会统一评审通过才能上线。https://linkedin.github.io/rest.li/modeling/modeling#resource-methods
|
20
zjsxwc 2021-05-17 19:51:18 +08:00 via Android
楼主你以为接口只是单纯的文件管理吗?
接口不幂等的业务多了去了。 |