鉴于订单取消是一项要求,以RESTful方式表示此操作的最佳设计选项是什么?为什么?
我至少可以考虑以下
/orders/{id}/cancelled
(空体)/orders/{id}
(包含更改属性cancelled
的整个订单JSON / XML /等)答案 0 :(得分:3)
请记住,您的资源应该是名词,而不是动词或形容词。您的http
负责告诉您使用资源做什么
/orders/{id}/cancelation
PUT
- 取消订单
DELETE
- 回滚取消(也可能是场景)
GET
- 返回取消详细信息(例如,您可能希望使用cancelation
和timestamp
字段扩展username
资源)
/orders/{id}
PUT(PATCH) - 可以通过传递类似的东西来取消:
{
...
"order_status": "CANCELLED"
...
}
这实际上取决于您的业务领域,但第一个听起来更适合我,因为它增加了一些灵活性,例如使用timestamp
扩展模型和取消取消。
答案 1 :(得分:0)
鉴于订单取消是一项要求,以RESTful方式表示此操作的最佳设计选项是什么?为什么?
考虑如何取消网站上的订单....
你会得到订单;在该顺序的表示内将是一个链接,具有一些语义标记,如to cancel your order, click here
。在该链接之后将带您进入取消表单,其中控件表示需要提交的信息,可能提供了默认值。然后,您将提交该表单,并且回复将传达您尝试取消订单的状态。
正确的RESTful方法就是这样做。关键的想法是服务器提供的表示告诉客户端如何操作;客户端只需要对协议有深入的了解:要查找的链接,要查找的语义形式。
(简而言之,REST告诉您要做的是为您的集成域构建一个网站,并提供应用程序状态的机器可读表示。)
为什么它允许提供者和消费者独立发展;只要两者之间的协议保持稳定,您就可以根据需要随时更改底层实现。