【问题标题】:RESTful API PUT/PATCH to flip booleanRESTful API PUT/PATCH 翻转布尔值
【发布时间】:2016-06-06 20:20:00
【问题描述】:

在 RESTful API 上翻转布尔值的正确方法是什么?

例如,考虑一个users/toggle_middle_name 端点。默认情况下,每个用户都不会显示他或她的中间名,除非他们通过点击端点来选择加入。

显然,这不是GET 端点,因为您将信息写入数据库。但是,在PATCH/PUT 请求中,我的一般理解是应该发送参数,表示要设置的数据。因此,例如,可以发送{show_middle_name: true}。但由于这只是一个在服务器端翻转的布尔值,理想情况下,您不需要知道在调用之前是发送true 还是false。只需点击端点,它就会从一个翻转到另一个,而不会发送任何值。

那么问题就变成了,是否可以直接点击PUT/PATCH 端点没有 参数,然后简单地在响应中返回结果?还是不鼓励使用无参数 PUT/PATCH API 调用?为什么或为什么不?

【问题讨论】:

  • 只是切换的缺点是您的服务器无法确认正确的结果。如果您放弃一个请求,突然间切换的操作与用户的意图完全相反(可能与前端告诉他们正在发生的事情在数据库中完全相反)。如果你在操作完成后发送你想要的结果,那是明确的。

标签: api rest boolean endpoint


【解决方案1】:

简单地说:不要

在我看来,不应该有专门的资源来翻转布尔值,因为布尔值本身并没有定义一个自包含的实体。

相反,我会将其设为User 的属性,并在/users/john_doe 上使用PATCH

{
  "show_middle_name": true/false
}

正如comment from jonrsharpe 所适用的那样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 2017-01-05
    • 2021-10-12
    • 2010-10-11
    相关资源
    最近更新 更多