REST服务设计:取消订单?

时间:2017-07-16 17:29:03

标签: rest

鉴于订单取消是一项要求,以RESTful方式表示此操作的最佳设计选项是什么?为什么?

我至少可以考虑以下

  • PUT /orders/{id}/cancelled(空体)
  • PUT /orders/{id}(包含更改属性cancelled的整个订单JSON / XML /等)

2 个答案:

答案 0 :(得分:3)

请记住,您的资源应该是名词,而不是动词或形容词。您的http负责告诉您使用资源做什么

  1. /orders/{id}/cancelation
  2. PUT - 取消订单

    DELETE - 回滚取消(也可能是场景)

    GET - 返回取消详细信息(例如,您可能希望使用cancelationtimestamp字段扩展username资源)

    1. /orders/{id}
    2. PUT(PATCH) - 可以通过传递类似的东西来取消:

      {
          ...
          "order_status": "CANCELLED"
          ...
      }
      

      这实际上取决于您的业务领域,但第一个听起来更适合我,因为它增加了一些灵活性,例如使用timestamp扩展模型和取消取消。

答案 1 :(得分:0)

  

鉴于订单取消是一项要求,以RESTful方式表示此操作的最佳设计选项是什么?为什么?

考虑如何取消网站上的订单....

你会得到订单;在该顺序的表示内将是一个链接,具有一些语义标记,如to cancel your order, click here。在该链接之后将带您进入取消表单,其中控件表示需要提交的信息,可能提供了默认值。然后,您将提交该表单,并且回复将传达您尝试取消订单的状态。

正确的RESTful方法就是这样做。关键的想法是服务器提供的表示告诉客户端如何操作;客户端只需要对协议有深入的了解:要查找的链接,要查找的语义形式。

(简而言之,REST告诉您要做的是为您的集成域构建一个网站,并提供应用程序状态的机器可读表示。)

为什么它允许提供者和消费者独立发展;只要两者之间的协议保持稳定,您就可以根据需要随时更改底层实现。