PATCH API REST最佳命名选项

时间:2019-02-17 21:11:08

标签: rest api

我想通过api向订单添加或替换优惠券。我想过这两种可能性

PATCH / api / orders / {id}

{ "couponCode": "test"}

PATCH / api / orders / {id} / coupon / {couponCode}

我喜欢第二个,因为在应用程序中应用优惠券代码很重要,并且此url指定得很好。

REST之后是否存在第一和第二有效的可能性?第二个选项对PUT和PATCH HTTP方法有效吗? 您认为哪个更好?

谢谢

1 个答案:

答案 0 :(得分:1)

PATCH方法本身并不是特别的RESTful。 REST是关于转移状态的,PATCH并没有真正做到这一点,而是发送了一条更新指令。

要使内容恢复正常,您需要做的是PUT请求,以创建和完全替换优惠券的状态

在不影响使用PATCH的情况下,这并不是一种认可,但是我对此的想法是,这样做是一个好主意:

  1. 提供适当的PUT请求以完全替换现有状态。
  2. 有了这一功能,就可以添加对PATCH的支持,以优化可能缓慢或笨拙的事物。

因此,如果您想在PATCH上使用/api/orders/{id},我首先想知道:PUT版本看起来如何?

我不完全了解PATCH上的/api/orders/{id}/coupon/{couponCode}意味着什么。您要更新优惠券代码吗?这很奇怪,因为该代码存在于uri中。 DELETE + PUT对我来说更有意义。也许HTTP MOVE方法甚至可能会有所帮助? (MOVE也属于“非RESTful阵营,但这对于GET + DELETE +`PUT是一个很好的优化。)

如果一个订单仅具有1张优惠券,则我希望使用/api/orders/{id}/coupon之类的uri结构,因为它是一种很好的单数资源,并且用PUT(或{{1} }。