请教一下大佬们怎么设计接口

2022-05-23 10:50:50 +08:00
 MakHoCheung

是面向业务设计接口还是面向资源设计接口

比如一个订单表包含有地址信息,修改地址这么一个需求,设计接口一般是 /updateAddress 还是 /updateOrder 呢,如果用 /updateOrder 的话后续更新订单其他信息也可以复用这个接口,但是更新订单信息可能当前业务只开放修改部分信息,所以接口里面做校验的逻辑就复杂了很多,如果用 /updateAddress 的话接口会越来越多,也增加测试的工作量

大佬们有何见解

2246 次点击
所在节点    问与答
24 条回复
MakHoCheung
2022-05-23 21:58:06 +08:00
@fivesmallq 我这边举的例子就是“用户有临时修改这个订单地址的时候”,不过我也倾向你这种“put /orders/:orderId/address” 而不是“ put /orders/:orderId/”
fivesmallq
2022-05-23 23:14:27 +08:00
推荐 2 个 api 设计的指南,我会经常参考 google 的 https://cloud.google.com/apis/design?hl=zh-cn

微软 azure 的 https://docs.microsoft.com/zh-cn/azure/architecture/best-practices/api-design

另外有些场景想不太明白也会参考 https://docs.github.com/en/rest/repos/reposhttps://docs.digitalocean.com/reference/api/api-reference/#operation/list_deployments

总是看到有人说 RESTful 不好用,复杂场景搞不定,自己思考过,参考过好的设计吗?
lldld
2022-05-24 08:47:04 +08:00
这个我是分两层的.
数据表相关的用资源的方式暴露内部接口;
业务相关的用前端需要的逻辑组合内部接口, 添加逻辑, 一般都是 POST, 比如问题中这个, 接口名字可能是 /order/address/update, /updateOrderAddress
MakHoCheung
2022-05-24 09:18:39 +08:00
@fivesmallq 多谢

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

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

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

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

© 2021 V2EX