После прочтения о различиях между REST и SOAP у меня сложилось впечатление, что REST - это просто другое слово для HTTP. Может кто-нибудь объяснить, какую функциональность REST добавляет в HTTP?
Примечание : я не ищу сравнение REST и SOAP.
Обновление : спасибо за ваши ответы. Теперь мне стало ясно, что REST - это просто набор правил использования HTTP. Поэтому я опубликовал продолжение о преимуществах этих конвенций .
Примечание : теперь я понимаю значение REST; Как отмечает Эмиль Иванов , REST означает использование HTTP таким, каким оно должно быть. Тем не менее, я не уверен, заслуживает ли это своего собственного термина, и я, конечно, не получаю шумиху вокруг этого.
Ответы:
Нет, REST путь HTTP должен быть использован .
Сегодня мы используем лишь небольшую часть методов протокола HTTP, а именно -
GET
иPOST
. Самый лучший способ сделать это - использовать все методы протокола.Например, REST диктует использование
DELETE
для стирания документа (будь то файл, состояние и т. Д.) За URI, тогда как в случае HTTP вы бы неправильно использовали aGET
илиPOST
запрос, подобный...product/?delete_id=22
.источник
HTTP - это протокол, используемый для связи, обычно используемый для связи с интернет-ресурсами или любым приложением с клиентом веб-браузера.
REST означает, что основной концепцией, которую вы используете при разработке приложения, является ресурс: для каждого действия, которое вы хотите выполнить, вам нужно определить ресурс, на котором вы обычно выполняете только операцию CRUD, что является простой задачей. для этого очень удобно использовать 4 глагола, используемые в протоколе HTTP, против 4 операций CRUD (Get for Read, POST для CREATE, PUT для UPDATE и DELETE для DELETE). это отличается от более старой концепции RPC (удаленного вызова процедур), в которой у вас есть набор действий, которые вы хотите выполнить в результате вызова пользователя. если вы думаете, например, о том, как описать facebook как в сообщении, с помощью RPC вы можете создать службы с именами AddLikeToPost и RemoveLikeFromPost и управлять ими вместе со всеми другими службами, связанными с сообщениями FB, поэтому вам не нужно создавать специальные объект для лайка. с REST у вас будет объект Like, которым будут управлять отдельно функции Delete и Create. Это также означает, что он будет описывать отдельную сущность в вашей базе данных. это может показаться небольшой разницей, но такая работа обычно приводит к гораздо более простому коду и гораздо более простому приложению. при таком дизайне большая часть логики приложения очевидна из структуры (модели) объекта, в отличие от RPC, с которой вам обычно приходится явно добавлять гораздо больше логики.
Проектирование RESTful-приложения обычно намного сложнее, потому что оно требует простого описания сложных вещей. описание всех функций с использованием только функций CRUD довольно сложно, но после этого ваша жизнь станет намного проще, и вы обнаружите, что будете писать гораздо более короткие методы.
Еще одна существующая архитектура REST-ограничения - не использовать контекст сеанса при взаимодействии с клиентом (без сохранения состояния), то есть вся информация должна понимать, кто является клиентом и что он хочет, передается с веб-сообщением. каждый вызов функции является информативным, нет предыдущего разговора с клиентом, на который можно сослаться в сообщении. поэтому клиент не может сказать вам «дайте мне следующую страницу», так как у вас нет сеанса для сохранения того, что является предыдущей страницей и какую страницу вы хотите, клиент должен будет сказать «меня зовут yuval, получите мне страница 2 конкретного поста в конкретном форуме ". это означает, что в сообщении должно быть передано немного больше данных, но подумайте о разнице между обнаружением ошибки, сообщенной функцией "get me next page" вместо "
Конечно, есть еще много чего, но, на мой взгляд, это основные понятия в чайной ложке.
источник
HTTP - это протокол приложения. REST - это набор правил, которые при соблюдении позволяют создавать распределенное приложение, имеющее определенный набор желательных ограничений.
Если вы ищете наиболее существенные ограничения REST, которые отличают RESTful-приложение от любого другого HTTP-приложения, я бы сказал, что ограничение «самоописание» и ограничение гипермедиа (иначе Hypermedia как движок состояния приложения (HATEOAS)) самое важное.
Ограничение самоописания требует, чтобы запрос RESTful был полностью информативным в намерениях пользователей. Это позволяет посредникам (прокси и кешам) безопасно работать с сообщением.
Ограничение HATEOAS касается превращения вашего приложения в сеть ссылок, где текущее состояние клиента основано на его месте в этой сети. Это сложная концепция и требует больше времени, чтобы объяснить, чем у меня сейчас.
источник
Насколько я понимаю, REST обеспечивает использование доступных HTTP-команд так, как они должны были использоваться.
Например, я мог бы сделать:
Но с остальными я бы использовал метод запроса «DELETE», устраняя необходимость в параметре запроса «method»
источник
Не совсем...
http://en.wikipedia.org/wiki/Representational_State_Transfer
http://www.looselycoupled.com/glossary/SOAP
источник
REST - это особый подход к проектированию больших систем (таких как сеть).
Это набор «правил» (или «ограничений»).
HTTP - это протокол, который пытается подчиняться этим правилам.
источник
REST = представительский государственный трансферт
ОСТАЛЬНОЕ - это набор правил, которые при соблюдении позволяют создавать распределенное приложение, имеющее определенный набор желательных ограничений.
REST - это протокол для обмена любыми (XML, JSON и т. Д.) Сообщениями, которые могут использовать HTTP для передачи этих сообщений.
Особенности:
Он не имеет состояния, что означает, что в идеале не должно поддерживаться соединение между клиентом и сервером. Клиент несет ответственность за передачу своего контекста на сервер, а затем сервер может сохранить этот контекст для обработки дальнейшего запроса клиента. Например, сеанс, поддерживаемый сервером, идентифицируется идентификатором сеанса, переданным клиентом.
Преимущества безгражданства:
Недостатки безгражданства:
Методы HTTP, поддерживаемые REST:
GET: / string / someotherstring Он идемпотентен и в идеале должен возвращать одинаковые результаты при каждом вызове
PUT: так же, как GET. Идемпотент и используется для обновления ресурсов.
POST: должен содержать url и body. Используется для создания ресурсов. Несколько вызовов в идеале должны возвращать разные результаты и создавать несколько продуктов.
УДАЛИТЬ: Используется для удаления ресурсов на сервере.
ГЛАВА:
Метод HEAD идентичен GET, за исключением того, что сервер НЕ ДОЛЖЕН возвращать тело сообщения в ответе. Мета-информация, содержащаяся в заголовках HTTP в ответ на запрос HEAD, ДОЛЖНА быть идентична информации, отправленной в ответ на запрос GET.
ПАРАМЕТРЫ:
Этот метод позволяет клиенту определять параметры и / или требования, связанные с ресурсом, или возможности сервера, не предполагая действия ресурса или не инициируя извлечение ресурса.
HTTP-ответы
Пойди сюда для всех ответов .
Вот несколько важных: 200 - OK 3XX - Требуется дополнительная информация от клиента и перенаправление URL 400 - Неверный запрос
401 - Несанкционированный доступ к
403 - Запрещено
Запрос был действителен, но сервер отклонил действие. Пользователь может не иметь необходимых разрешений для ресурса или ему может потребоваться какая-либо учетная запись.
404 - Не найдено
Запрошенный ресурс не найден, но может быть доступен в будущем. Последующие запросы клиента допустимы.
405 - Метод не разрешен Метод запроса не поддерживается для запрошенного ресурса; например, запрос GET для формы, которая требует представления данных через POST, или запрос PUT для ресурса, доступного только для чтения.
404 - Запрос не найден
500 - Внутренняя
ошибка сервера 502 - Ошибка неверного шлюза
источник
HTTP - это коммуникационный протокол, который транспортирует сообщения по сети. SOAP - это протокол для обмена сообщениями на основе XML, который может использовать HTTP для передачи этих сообщений. Rest - это протокол для обмена любыми (XML или JSON) сообщениями, которые могут использовать HTTP для транспортировки этих сообщений.
источник
HTTP is a contract, a communication protocol and REST is a concept, an architectural style
который может использовать HTTP, FTP или другие протоколы связи, но широко используется с HTTP.REST implies a series of constraints about how Server and Client should interact
,HTTP is a communication protocol with a given mechanism for server-client data transfer
чаще всего используется в REST API только потому, чтоREST was inspired by WWW (world wide web) which largely used HTTP
до того, как был определен REST, проще реализовать стиль REST API с помощью HTTP.1.
Взаимодействие между сервером и клиентом должно быть описано только через гипертекст.2.
Сервер и клиент должны быть слабо связаны и не делать предположений друг о друге. Клиент должен знать только точку входа в ресурс. Данные о взаимодействии должны быть предоставлены сервером в ответе.3.
Сервер не должен хранить информацию о контексте запроса. Запросы должны быть независимыми и идемпотентными (то есть, если один и тот же запрос повторяется бесконечно, то получается один и тот же результат)А HTTP - это просто протокол связи (инструмент), который может помочь достичь этого.
Для получения дополнительной информации проверьте эти ссылки:
https://martinfowler.com/articles/richardsonMaturityModel.html http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
источник
REST не обязательно привязан к HTTP . Веб-сервисы RESTful - это просто веб-сервисы, которые следуют архитектуре RESTful.
источник
1-Client-server
,2-stateless
,3-casheable
. Тогда какие дополнительные функции / ограничения REST накладывают на HTTP? Что мы можем сделать с REST, что нельзя сделать только с помощью HTTP?От Вы не знаете разницу между HTTP и REST
источник
API REST должны управляться гипертекстом
Из блога Рой Филдинг здесь множество способов , чтобы проверить , если вы строите HTTP API или REST API:
источник