RESTful API PUT/PATCH 翻转布尔值
RESTful API PUT/PATCH to flip boolean
在 RESTful API 上翻转布尔值的正确方法是什么?
例如,考虑一个 users/toggle_middle_name
端点。默认情况下,每个用户不会显示他或她的中间名,除非他们通过点击端点选择加入。
显然,这不是 GET
端点,因为您要将信息写入数据库。但是,在 PATCH/PUT
请求中,我的一般理解是应该发送参数,表示要设置的数据。因此,例如,可以发送 {show_middle_name: true}
。但由于这只是一个在服务器端翻转的布尔值,理想情况下,您不需要知道在调用之前是发送 true
还是 false
。只需点击端点,它就会从一个翻转到另一个,但不会发送任何值。
然后问题就变成了,只点击 PUT
/PATCH
端点 没有 参数是否可以,并且简单地 return结果有回应?还是不鼓励无参数 PUT
/PATCH
API 调用?为什么或为什么不?
简单地说:不要
在我看来,不应该有专门的资源来翻转布尔值,因为布尔值本身并没有定义一个独立的实体。
相反,我会将其设为 User
的属性,并在 /users/john_doe
上使用
执行 PATCH
{
"show_middle_name": true/false
}
作为 适用。
在 RESTful API 上翻转布尔值的正确方法是什么?
例如,考虑一个 users/toggle_middle_name
端点。默认情况下,每个用户不会显示他或她的中间名,除非他们通过点击端点选择加入。
显然,这不是 GET
端点,因为您要将信息写入数据库。但是,在 PATCH/PUT
请求中,我的一般理解是应该发送参数,表示要设置的数据。因此,例如,可以发送 {show_middle_name: true}
。但由于这只是一个在服务器端翻转的布尔值,理想情况下,您不需要知道在调用之前是发送 true
还是 false
。只需点击端点,它就会从一个翻转到另一个,但不会发送任何值。
然后问题就变成了,只点击 PUT
/PATCH
端点 没有 参数是否可以,并且简单地 return结果有回应?还是不鼓励无参数 PUT
/PATCH
API 调用?为什么或为什么不?
简单地说:不要
在我看来,不应该有专门的资源来翻转布尔值,因为布尔值本身并没有定义一个独立的实体。
相反,我会将其设为 User
的属性,并在 /users/john_doe
上使用
PATCH
{
"show_middle_name": true/false
}
作为