У меня есть служба REST для обработки видеосерверов в сети.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. Должен ли я рассматривать это как поиск в моей коллекции вместо использования «искусственных» ресурсов ?