【发布时间】:2018-12-13 21:32:42
【问题描述】:
创建/修改资源的 post 或 put 方法能否接受不同的请求对象集?
例如:我有一个名为'server' 的资源。它可以通过它的操作系统来区分。例如,我可以有两个资源实例 - windows server 和 linux server。
我在这里的基本决定是将它们视为相同类型的资源,即server。
现在,创建 Windows 服务器可能会发生,我的 POST API 接受的请求对象与相同 API 用于 linux 服务器的请求对象不同。
为了创建 Windows 服务器,我有 -
POST : /v1/server
accepts
{
name : win-server-1
os : 'windows'
ms-office: 'Office2009'
}
为了创建 linux 服务器,我使用相同的 api 但使用不同的请求对象 -
POST : /v1/server
accepts
{
name : linux-server-1,
os : 'linux'
kernel-version : '3.10.0'
}
如您所见,相同 POST API 接受的请求对于 windows 和 linux 服务器是不同的。我的业务逻辑将根据'os' 属性处理这些请求。所以从技术上讲,它会起作用(使用丑陋的开关盒)。
但这真的很平静吗?或者我应该有不同的 API,例如 /v1/windows-server 和 /v1/linux-server,并为每个 API 定义唯一的请求定义?
【问题讨论】:
标签: rest api-design