我有一个 REST 服务处理网络上的视频服务器。
可以通过多种方式识别每个视频服务器:序列号、名称或机器编号。
为了返回我网络上所有可用服务器的集合,事情非常简单:我定义了以下路由:
[Route("/servers", "GET")]
和以下请求类:
public class ServerCollection : IReturn<List<ServerDto>>
{
...
}
现在,我想从我的集合中返回一个特定的服务器,通过它的序列号、它的机器名称或它的机器号来识别它。
为此,我定义了以下路线:
[Route("/servers/{SerialNumber}", "GET")]
[Route("/servers/machinenumbers/{MachineNumber}", "GET")]
[Route("/servers/machinenames/{MachineName}", "GET")]
和以下请求类:
public class Server : IReturn<ServerDto>
{
public uint SerialNumber { get; set; }
public uint MachineNumber { get; set; }
public string MachineName { get; set; }
}
因此,我可以通过以下方式访问我的服务器集合:
GET /servers
并使用以下任一方法获取特定服务器:
GET /servers/3
GET /servers/machinenumbers/42
GET /servers/machinenames/supercalifragilisticexpialidocious
这是正确的方法吗?我觉得这不是很 RESTful。我是否应该将此视为在我的收藏中进行搜索而不是使用“人工”资源?