2026-06-04#
Data: 2026-06-04 23:36:57
推特上有人给出了两个这样的接口,然后讨论一下哪种更好:
方案 A :
GET /users GET /users/1 POST /users DELETE /users/1
方案 B :
GET /getUsers GET /getUserById?id=1 POST /createUser DELETE /deleteUser?id=1
原推文: https://x.com/Its_Nova1012/status/2062383146201698789
对于初学者,或者早年间编程的人来讲,可能觉得 B 更熟悉,但是实际上,我们这几年,基本上都已经普及 A 了,这是 RESTful 风格!
哪种更好呢?方案 A 是我们很常用的更清晰的 RESTful 设计 。这种显然在我自己看来,更好。因为现在我们大部分系统都在使用 RESTful 风格。比如 stripe、github 这种我们经常打交道的 API 。可扩展且标准化。
方案 B,其实是经典的 RPC 风格的 API,端点以操作命名。
方案 B 的确定是,它看起来不好看,而且会随着 API 的不断成长,变得越来越臃肿,很难维护。而且吧,读起来就像有人给函数命名后忘了停下来。
方案 B 会导致很大的技术债务,因为动作已经在前面的 HTTP 协议里的 GET DELETE 等注明了,没有必要再写个 getUserById deleteUser 这种函数了。
当然,其实这个对比,还应该再改进一下哈!
就是得加上版本号。
方案 A (加上版本号):
GET /v1/users GET /v1/users/1 POST /v1/users DELETE /v1/users/1
这样看起来舒服多了哈哈。