RESTful 风格下,一个 Action 需要对多个资源操作要如何理解?

2018-08-07 11:25:40 +08:00
 ifane
比如前端有一个按钮,这个按钮表示「去结算」,这个「去结算」代表了后端需要执行一系列的操作:更新订单资源,创建该订单对应的物流资源,更新用户余额。

这个系列的操作如果交由前端来逐个调用:先调用 A 接口表示更新订单,A 成功返回 200 再调用 B,B 成功返回 200 再调用 C.
感觉这样实现不太合适。
10524 次点击
所在节点    Python
53 条回复
agagega
2018-08-08 00:48:01 +08:00
变通一下

幂等读,可缓存,用 GET
幂等写,用 PUT/PATCH
带有删除语义,用 DELETE
其余复杂的业务,自己设计一个路由然后用 POST
lrh3321
2018-08-08 07:34:43 +08:00
@TommyLemon 勤勉的布道师,我已经见过你不下五次了
slince
2018-08-08 09:37:37 +08:00
@est restful 不要狭隘的去理解 restful 抽象的增删改查; restful 概念是出现的比较早,但流行也就是这几年的事; paypal 这么庞大的企业的 api 都已经换成了 restful, 你还觉得它 out 了吗;
TommyLemon
2018-08-08 09:55:18 +08:00
@lrh3321
哈哈,感觉 V2EX 用户量不多啊。
我要是有 Facebook 这样的影响力,有一大堆自发地宣传推广 GraphQL 的粉丝,
我也用不着自己到处去发博客、评论、回复来推广 APIJSON 了,唉。

APIJSON 全方位对比 GraphQL
https://juejin.im/post/5ae80edd51882567277433cf
suley
2018-08-08 10:03:05 +08:00
@lscho

我认为 restful 的本意就是同一个资源会共享同一个模型,类似于 Java 对象的定义一样,如果同一种资源不同的接口返回的模型不一样,那么就复杂了。
qinxi
2018-08-08 10:09:52 +08:00
@TommyLemon 所以这就是你滥用评论的理由?
qinxi
2018-08-08 10:10:17 +08:00
@micean 这种人 b 了完事
M4ster
2018-08-08 10:15:25 +08:00
资源 != 表
est
2018-08-08 10:19:21 +08:00
@newtype0092 我也是这个做法。PUT DELETE 都是笨蛋设计。
solee
2018-08-08 10:35:05 +08:00
业务快速发展 Restful 设计理念毕竟也不能满足所有需求。记得以前看过一篇文章,就是对 restful 设计理念的一个变种,但是很实用,我们现在的业务 api 设计也基本按照那个思路来的
附上链接: https://mp.weixin.qq.com/s/AhiyMnJ70TkOMnmkXG1Lsw
lscho
2018-08-08 10:37:56 +08:00
@suley 前后端的概念一定要搞清楚,抽象资源和实体数据一定要搞清楚。。比如订单,对于前端来说,订单就是抽象资源,对于后端来说,订单不仅仅是订单表,还有用户表,商品表,等一系列与订单相关的,都属于订单。至于前段需要什么数据,就需要后端整合后返回了。

如果后端说资源=表,那他纯粹是偷懒。
suley
2018-08-08 10:53:51 +08:00
@lscho 你说了那么大一堆,有没有解释清楚,同一个资源不同的 uri 请求回来的资源实体不一致的问题?
lscho
2018-08-08 11:20:59 +08:00
@suley 请问哪种情况会出现不同 uri 中的资源会出现同一个资源?

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

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

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

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

© 2021 V2EX