例如:
https://developers.facebook.com/docs/graph-api/reference/v2.1/page/locations
来自Rails / REST背景,我的印象是使用PUT或PATCH进行更新是最佳做法。所以我想知道,为什么Facebook只使用POST进行更新?
是因为POST和GET更简单,而不是4或5种不同的HTTP方法?或者是因为他们支持一些只有那些设备?或者他们打算转向使用PUT / PATCH?有什么想法吗?
使用POST来创建和更新记录似乎很好,所以你不必关心实现,但想知道这背后的原因是什么。
答案 0 :(得分:0)
他们不使用PUT或PATCH,因为URL并未指向特定项目的实际位置,而是指向整个集合。项目的实际ID(主键,如果需要)是邮件正文的一部分。
在FB示例中,似乎需要page-id,main_page_id,store_number和location_page_id来识别资源。 page-id
已经存在,但为了使用PUT,他们还必须将其他人放在网址中:
PUT /v2.1/{page-id}/locations/{main_page_id}/{store_number}/{location_page}
出于某种原因,他们并不想这样做。所以它变得很难看,因为它们将项目的有效负载与它的地址混合在一起。一般来说,人们希望邮件正文的内容包含对URL指向的地址的资源所做的更改。商品ID 是 地址,因此不可变,因此它不属于正文。