我想通过api向订单添加或替换优惠券。我想过这两种可能性
PATCH / api / orders / {id}
{ "couponCode": "test"}
PATCH / api / orders / {id} / coupon / {couponCode}
我喜欢第二个,因为在应用程序中应用优惠券代码很重要,并且此url指定得很好。
REST之后是否存在第一和第二有效的可能性?第二个选项对PUT和PATCH HTTP方法有效吗? 您认为哪个更好?
谢谢
答案 0 :(得分:1)
PATCH
方法本身并不是特别的RESTful。 REST是关于转移状态的,PATCH
并没有真正做到这一点,而是发送了一条更新指令。
要使内容恢复正常,您需要做的是PUT
请求,以创建和完全替换优惠券的状态 。
在不影响使用PATCH
的情况下,这并不是一种认可,但是我对此的想法是,这样做是一个好主意:
PUT
请求以完全替换现有状态。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} }。