2009-07-29 5 views
6

Что вам нужно избегать при настройке Restful интерфейса, чтобы убедиться, что вы не превратили его в RPC?Restful web services

+0

Jeff, не начинайте свое предложение с четырех пробелов - это будет означать «уценку», чтобы рассматривать его как кодовый блок (без переноса слов) и делает его действительно трудным для чтения - за исключением фактических блоков кода, курс! :-) –

+0

http://www.pluralsight.com/community/blogs/tewald/archive/2007/04/28/47067.aspx – skaffman

+0

@SLott ... oops .. done – skaffman

ответ

8

Do:

  • Дизайн вашего приложения, чтобы быть hypertext-driven (HyperMedia как двигатель состояния приложения - HATEOAS).
  • Проведите большую часть своего времени и усилий, идентифицируя ресурсы и создавая типы медиа для их представления.
  • Подумайте обо всем URI в качестве идентификатора ресурса и предположите, что он изменится в будущем.
  • Предоставьте все варианты дальнейшего продвижения через ваше приложение в качестве ссылок в вашем представлении.
  • Подумайте о своем приложении как веб-сайте, который будет «просканирован» или «просмотрен» клиентами.
  • Попробуйте написать клиент для вашего API и посмотреть, где происходит соединение.

ЗАПРЕЩАЕТСЯ:

  • Публикация шаблонов URI в документации API. Если у вас должны быть шаблоны для параметров запроса, например, убедитесь, что они являются частью определения типа вашего медиа.
  • Подумайте о своем приложении как о наборе URI, на котором действуют четыре глагола.
  • Служат тимминге типа «application/xml» или «application/json» для клиентов.

Чтобы использовать аналогию, ваш API должен работать больше как GPS для ваших клиентов и менее похож на карту. Вы будете предоставлять клиентам только имя близлежащей улицы.Но с этого момента они могут делать только то, что ваше приложение говорит, что они могут делать в любой момент.

Целью этого стиля является минимизация связи между вашим приложением и его клиентами. Вся связь должна выполняться в определении типа вашего носителя. Это упрощает эволюцию API и обеспечивает хороший механизм для управления версиями. В нем также возникают вопросы о таких проблемах, как разбиение на страницы.

Большинство API «RESTful» не соответствуют этому образцу. Для того, что делает, см. Sun Cloud API и его backstory.

+0

Спасибо за помощь в распространении слова в REST, точно и четко. – aehlke

2

Тип широкого вопроса, но я попробую. Во-первых, используйте только HTTP-глаголы, как они были предназначены. Не отправляйте POST на URL с аргументом url, который в основном переопределяет POST и превращает его в GET или DELETE. Так работает SOAP (все это POST).

+0

Это просто правильное использование HTTP - doesn Я не имею никакого отношения к REST. – aehlke

4

Воспользуйтесь базовым протоколом, где это возможно. Вместо того, чтобы иметь глаголы в вашей полезной нагрузке, попробуйте использовать (например) методы HTTP GET, POST, PUT, DELETE. Ваш URI должен описывать ресурс, но не то, что с ним делать.

+0

Это НИЧЕГО не имеет отношения к ОТДЫХУ! Это просто HTTP. – aehlke

+0

Я просто предоставил HTTP в качестве примера (поскольку это, вероятно, самый распространенный протокол в этой ситуации), чтобы усилить, что URI должны быть глагольными. –

3

Некоторые из вещей, которые вы хотите, чтобы избежать являются:

  • Игнорирование кэширование
  • Tunneling все через GET (или в качестве альтернативы POST)
  • Игнорирование типы MIME

Там хорошая статья здесь, что говорит о некоторых из REST анти-моделей:

http://www.infoq.com/articles/rest-anti-patterns

Смежные вопросы