首页 > 解决方案 > 用于更新地图的 REST API 是否应该允许将地图设置为空?

问题描述

我有一个用于管理键到值的简单映射的 rest API。

例如,GET 请求可能返回以下内容:

 {
    "keyA": "valueA",
    "keyB": "valueB"
 }

有一个 PUT 端点用请求正文中的新地图替换地图。例如,可以将地图替换为新地图:

 {
    "keyC": "valueC"
 }

这将删除键“keyA”和“keyB”,并添加“keyC”。我们正在争论的问题是是否应该允许 PUT 请求发送一个空映射{}来完全清除映射,这样它就没有剩下的键了。这应该被阻止吗?这是否遵循 REST 约定?

标签: jsonrestapi

解决方案


这是否遵循 REST 约定?

REST 对表示的说明相对较少,除了它们应该被标准化这一事实。因此,例如,REST 认为使用application/json很棒,因为它有一个标准,因此其他也使用 JSON 的工具可以理解您的表示。

而且..这就是它所要说的。

一旦您在有效负载中收到带有有效 JSON 表示的 PUT 请求,您对其执行的操作(尤其是是否应该允许)就是一个实现细节。承诺的是您的服务器对其存储的表示进行处理,等等。

例如,在远程创作环境中,您的服务器实际上只是充当一个哑数据存储,那么存储一个空的 JSON 对象当然是有效的。

另一方面,如果该 JSON 表示应该描述带有必需元素的消息,那么不,您可能不希望在那里允许一个空对象。(在这种情况下,您可能不会使用 application/json,而是使用一些供应商类型)。


推荐阅读