Resful стандарты веб-сервисов, лучшие практики
Я ищу лучшие практики по стандартам спокойного веб-сервиса. Одна из главных вещей, которые я хочу разобрать, это разделение сущностей в URL. Какое право делать, группировать методы по одному URL или отдельно по имени объекта?
[WebGet(UriTemplate = "countries/{id}")]
Country GetCountry(int id);
[WebInvoke(UriTemplate = "countries/{id}", Method = "POST")]
Country CreateCountry(int id, Country country);
or
[WebGet(UriTemplate = "resources/lists/countries/{id}")]
Country GetCountry(int id);
[WebInvoke(UriTemplate = "resources/lists/countries/{id}", Method = "POST")]
Country CreateCountry(int id, Country country);
1 ответ
Первый вариант чище. Все URI в REST API должны быть ресурсами, поэтому "ресурсы" не нужны в URI, и я бы сказал, что "списки" тоже не нужны, поскольку это просто способ представления коллекции ресурса.
Кроме того, если вы собираетесь реализовывать службы REST в C#, как показано в примере, я настоятельно рекомендую использовать ASP.NET Web API. Он обеспечивает очень чистый, мощный и простой способ реализации служб REST.
Restful Web Services - это отличная книга, в которой приведены базовые рекомендации по созданию спокойных веб-сервисов, а также приведены отличные примеры. Вы также можете проверить модель зрелости Ричардсона, которая описывает спокойствие обслуживания с точки зрения уровней зрелости. Чтобы услуга была спокойной, она должна быть на верхнем уровне зрелости, но уровни дают хорошее руководство для принятия шагов в правильном направлении.