dedemao
V2EX  ›  问与答

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

  •  2
     
  •   dedemao · May 16, 2021 · 5652 views
    This topic created in 1996 days ago, the information mentioned may be changed or developed.

    看了支付宝、微信公众号、钉钉、抖音等开放平台的接口文档,无一例外,都没有使用 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 接口规范吗,为什么?

    20 replies  •  2021-05-17 19:51:18 +08:00
    12101111
    12101111
    May 16, 2021
    1
    RESTful 并没有规范, 规范的是 openapi 这样的东西
    TomVista
    TomVista
    May 16, 2021 via Android❤️1
    2
    场景不合适

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

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

    参考一下 strip 支付 api,
    wellsc
    wellsc
    May 16, 2021
    3
    ?
    Mithril
    Mithril
    May 16, 2021❤️2
    4
    纯粹的 Restful 是太理想化的模型,但凡你的业务稍微复杂一点,一个页面上的数据你就能搞出来几十个请求。
    实际实现上都会做不同程度的妥协的。
    renmu123
    renmu123
    May 16, 2021 via Android
    5
    因为太过理想,不好用
    Cbdy
    Cbdy
    May 16, 2021 via Android
    6
    并没有你说的这个东西
    jeffh
    jeffh
    May 16, 2021
    7
    RESTful 说到底不好管理,一个用户详情接口,带了每个人的用户 id,每个人都不一样。
    icanfork
    icanfork
    May 16, 2021 via iPhone
    8
    反过来,为什么大厂不能有自己的规范呢
    zxCoder
    zxCoder
    May 16, 2021
    9
    因为 restful 不好
    huangsen365
    huangsen365
    May 16, 2021 via iPhone
    10
    因为需求经常改来改去…
    ch2
    ch2
    May 16, 2021
    11
    GET 跟 POST 就够用了
    ddllzz
    ddllzz
    May 16, 2021 via Android
    12
    有些需求不能抽象成处理资源
    oott123
    oott123
    May 16, 2021❤️1
    13
    首先不要迷信大厂,大厂搞出来的东西未必是好的。

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

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

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

    举个例子,elasticsearch 的 /_cluster/settings 如果你要修改“其中一部分”内容,用 PUT,感觉对吗?但人家就是那样用的
    tonyaiken
    tonyaiken
    May 17, 2021 via iPhone
    19
    我司有公开内部指引,大家都必须按照指引同一风格,内部有委员会统一评审通过才能上线。https://linkedin.github.io/rest.li/modeling/modeling#resource-methods
    zjsxwc
    zjsxwc
    May 17, 2021 via Android
    20
    楼主你以为接口只是单纯的文件管理吗?
    接口不幂等的业务多了去了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5330 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 58ms · UTC 01:25 · PVG 09:25 · LAX 17:25 · JFK 20:25
    ♥ Do have faith in what you're doing.