我正在为我的 REST JSON 服务寻找建议。我有 1 个简单的订单,基本上是做简单的 CRUD。所以基本上除了获取订单的详细信息、创建订单和删除订单外,我还想在单个订单上做更多的活动,比如:
- 批准订单
- 将订单发送给特定用户
- 取消订单
- 暂停订单
- 拒绝订单
- 喜欢订单
任何人都可以分享我如何扩展服务的想法。目前我在下面有一个URI,比如
非常感谢你
我正在为我的 REST JSON 服务寻找建议。我有 1 个简单的订单,基本上是做简单的 CRUD。所以基本上除了获取订单的详细信息、创建订单和删除订单外,我还想在单个订单上做更多的活动,比如:
任何人都可以分享我如何扩展服务的想法。目前我在下面有一个URI,比如
非常感谢你
所以http://myapi.com/orders/ {id} 将是一个订单的获取,我见过的大多数设计师都使用复数,fyi。
在这种情况下,我会提供两个选项(最不喜欢的例子是第一个)
A. 枚举可能发生的操作并为该操作执行查询参数,例如 http://myapi.com/orders/123?action=APPROVE使用您需要提供的任何数据响应 POST 方法。
**注意我不喜欢上面的,因为它感觉更像 RPC 而不是 REST,但它绝对可以满足您的需求。
B. 除了你的 CRUD 之外,还提供一个行为模式。因此您可以通过@POST、@GET 等执行粗略的/orders 表单,然后提供/orderActions/approve/{id} 或类似于POST 的内容以进行批准操作。
你没有提到你在这个项目中使用的是什么语言。我会推荐带有state_machine gem 的 Ruby on Rails,这将允许您执行 CRUD 以及您希望通过的其他“状态”。
我说 RoR 主要是因为它会为您开箱即用地完成 CRUD,而state_machine
gem 会完成剩下的工作。