2014-11-27 8 views
2

В последние несколько лет было много шумихи над REST, и я попытался принять принцип и понять его преимущества. Однако некоторые вещи о REST все же ускользают от меня. Я постараюсь быть кратким и точным:Что такое приложение RESTful?

  • Может ли веб-приложение считаться RESTful? В чем преимущества этого? Я могу понять (в какой-то степени) преимущества RESTful-сервиса, который должен использоваться многими клиентами, но что получается благодаря использованию принципов REST при разработке интерфейса приложения, который должен использоваться интерфейсом HTML/JS?
  • REST обязывает использовать глаголы, которые примерно соответствуют операциям CRUD и на которые сервер отвечает представлениями, которые, в свою очередь, помещают клиента в новое состояние. Означает ли это, что ВСЕ действия на ресурсе должны выполняться посредством модификации/создания/удаления этого и, возможно, многих других связанных ресурсов? Как насчет «атомарности» таких операций (т. Е. Транзакций)?
  • Служба, совместимая с REST, должна быть самоописательной (по принципу HATEOAS), но отсутствие метаданных делает невозможным для клиента, например. создать ресурс, не зная точно, какие поля (и их типы) являются обязательными. Эта информация все равно должна предоставляться вне диапазона. Здесь что-то не хватает?

У меня могло возникнуть больше вопросов, но этого будет достаточно, если кто-то сможет прояснить эти моменты для меня.

ответ

1

Некоторые замечания по поводу ваших вопросов:

1) Если веб-приложение одного приложения Page простейший способ общения с сервером будет, если это услуга отдыха.

Для традиционного веб-приложения, я думаю, лучше, что «контроллеры» общаются с уровнем сервиса, используя инъекцию зависимости.

3) Да, конечно, клиенту необходимо знать формат данных, которые он получает. Но AFAIK, Rest не дает никаких ограничений относительно того, как эти метаданные должны быть определены или переданы.

Принцип HATEOAS относится скорее к обнаружению связанных ресурсов из заданного. Там существует различные соглашения, чтобы выразить, что отношения, смотри, например: http://stateless.co/hal_specification.html

2) действие Каждый Rest должен быть атомарным. Если вам нужна какая-то длительная операция, обычно создается ресурс, описывающий операцию. Состояние операции извлекается из этого ресурса, и вы делаете все, что хотите, при операции (т. Е. Отмените ее), взаимодействующей с этим ресурсом. См. Пример этого here.

0

1.Обычно архитектура REST разработана, когда приложение будет использоваться различными пользователями (внешние потребители api, мобильные приложения и т. Д.). В этом случае затраты на разработку будут полностью возвращены. Разработка действительно REST-приложения не такая простая задача. Итак, , если вы заранее знаете, что ваше приложение должно использоваться только вашей клиентской стороной, возможно, , вы можете рассматривать 100% -ный подход RESTfull как накладные расходы. Но это не значит, что вы не должны проектировать свое приложение хорошо, вы все равно можете использовать некоторые из принципов REST в своем приложении. Например, приложение без гражданства упрощает масштабирование, URL-адреса в стиле REST выглядят хорошо для пользователей и поисковых систем и т. Д.

2. Да, в истинном ОТНОШЕНИИ все взаимодействия должны быть выражены через стандартные глаголы ресурсов. Но вы все еще можете создать Транзакция ресурс для обертывания вашей транзакции. Смотрите большое обсуждение: Transactions in REST?

3. Насколько я понимаю, это не мешает вам предоставлять метаданные-информацию в ответе на основе HATEOAS.

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