json - 用于更新地图的 REST API 是否应该允许将地图设置为空?
问题描述
我有一个用于管理键到值的简单映射的 rest API。
例如,GET 请求可能返回以下内容:
{
"keyA": "valueA",
"keyB": "valueB"
}
有一个 PUT 端点用请求正文中的新地图替换地图。例如,可以将地图替换为新地图:
{
"keyC": "valueC"
}
这将删除键“keyA”和“keyB”,并添加“keyC”。我们正在争论的问题是是否应该允许 PUT 请求发送一个空映射{}
来完全清除映射,这样它就没有剩下的键了。这应该被阻止吗?这是否遵循 REST 约定?
解决方案
这是否遵循 REST 约定?
REST 对表示的说明相对较少,除了它们应该被标准化这一事实。因此,例如,REST 认为使用application/json很棒,因为它有一个标准,因此其他也使用 JSON 的工具可以理解您的表示。
而且..这就是它所要说的。
一旦您在有效负载中收到带有有效 JSON 表示的 PUT 请求,您对其执行的操作(尤其是是否应该允许)就是一个实现细节。承诺的是您的服务器对其存储的表示进行处理,等等。
例如,在远程创作环境中,您的服务器实际上只是充当一个哑数据存储,那么存储一个空的 JSON 对象当然是有效的。
另一方面,如果该 JSON 表示应该描述带有必需元素的消息,那么不,您可能不希望在那里允许一个空对象。(在这种情况下,您可能不会使用 application/json,而是使用一些供应商类型)。
推荐阅读
- angular - 如何对来自管道的数据应用条件
- c# - 什么时候不要在 C# 中使用 static 关键字?
- python - 用python翻转电影尺寸的最简单方法
- javascript - 更改所有 td 颜色
- python - 如何以图像/超链接格式获得聊天机器人的响应?
- azure - 将自定义标头添加到 Azure Functions 响应
- python - Matplotlib:指示图上的最大值
- android - Recyclerview ListAdapter DiffUtil 未按预期工作
- java - Spring boot 使用 MySQL(Master/Slave) 配置多数据源
- html - 放大导致页脚不增长