【发布时间】: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 调用?为什么或为什么不?
【问题讨论】:
-
只是切换的缺点是您的服务器无法确认正确的结果。如果您放弃一个请求,突然间切换的操作与用户的意图完全相反(可能与前端告诉他们正在发生的事情在数据库中完全相反)。如果你在操作完成后发送你想要的结果,那是明确的。