【问题标题】:Why does the Facebook API use POST for updating records?为什么 Facebook API 使用 POST 来更新记录?
【发布时间】:2014-09-02 06:33:32
【问题描述】:

例如:

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 来创建和更新记录似乎很好,所以你不必关心实现,但想知道这背后的原因是什么。

【问题讨论】:

  • @DanMan 您的链接给出了关于POST/PUT/PATCH 的总体思路,但它认为问题更多是关于“当'每个人'都说使用PUT 或PATCH 时他们为什么选择POST”。至少我想得到这方面的意见。

标签: rest facebook-graph-api


【解决方案1】:

他们不使用 PUT 或 PATCH,因为 URL 不指向特定项目的实际位置,而是整个集合。项目的实际 ID(主键,如果需要)是消息正文的一部分。

在 FB 示例中,似乎 page-id、main_page_id、store_number 和 location_page_id 都是标识资源所必需的。 page-id 已经存在,但为了使用 PUT,他们必须将其他人也放入 URL:

PUT /v2.1/{page-id}/locations/{main_page_id}/{store_number}/{location_page}

出于某种原因,他们不想走那条路。所以它变得丑陋了,因为他们将项目的有效负载与其地址混合在一起。一般而言,人们希望消息正文的内容包含对 URL 指向的地址处的资源所做的更改。项目的 ID 地址,因此是不可变的,因此它不属于正文。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 2020-02-02
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 1970-01-01
    相关资源
    最近更新 更多