Когда использовать REST для обработки запросов против использования AJAX для обработки запросов [закрыто]


12

На моей веб-странице, если я хочу отображать динамические выпадающие списки (например, названия городов в зависимости от выбранной страны), я могу сделать это с помощью AJAX. Но я также могу сделать это с помощью вызова REST. Итак, что я должен использовать?

Моя проблема в том, что я действительно не вижу разницы между REST и любым другим запросом HTTP-браузера (он же форма отправки). Я посмотрел на формальные определения REST, и он кажется идентичным HTTP-запросу. Так чем же REST по своей сути отличается от AJAX?


6
Как вы уже догадались, они вовсе не являются взаимоисключающими.
Сет Бэттин

2
вы обычно используете REST API, когда к вашему приложению обращается другое приложение
Джан Акуна

Я не вижу сравнения между ними. AJAX - это приложение нескольких техник для реализации динамического веб-контента, а REST - это архитектурный стиль.
Джрамойо

2
@ downvoter --- почему ненависть?
Каушик

Ответы:


26

Я могу сделать это с помощью AJAX. Но я также могу сделать это с помощью вызова REST.

Нет Эти два полностью ортогональны. Если вы хотите , чтобы обновить страницу с данными вы должны получить от сервера, вы будете делать это с помощью AJAX. Другого пути нет. И этот вызов AJAX может использовать REST или что-то еще.

Моя проблема в том, что я действительно не понимаю разницы между REST и HTTP-запросом браузера (он же форма отправки). Я посмотрел на формальные определения REST, и это похоже на HTTP-запрос.

REST вызов является запрос HTTP, всегда. Хотя он может использоваться для обработки обычных вызовов браузера (например, отправки форм) и возврата полных HTML-страниц, он обычно используется для обработки вызовов API, которые возвращают только данные (обычно в формате JSON).

Так почему у него есть отдельное имя?

Поскольку REST - это особый стиль использования HTTP, возможно, его используют в том виде, в котором он изначально был предназначен, но который большинство людей не «понимало» и поэтому редко использовалось в течение почти двух десятилетий.

В частности, REST означает кодирование объекта, который вы хотите получить или манипулировать в самом URL-адресе (обычно с помощью идентификатора), и кодирование того, какое действие вы хотите выполнить с ним в используемом методе HTTP (GET для получения, POST для изменения, PUT для создания УДАЛИТЬ для удаления).


6
REST не всегда должен быть через HTTP. Любой протокол может быть REST, если он соответствует набору методов. Но в контексте веб-приложения это будет, конечно, HTTP.
Ян Худек

10
@Jan Hudec: Есть ли реальные примеры использования REST с другими протоколами?
Майкл Боргвардт

6

Что ж, я думаю, вам сначала нужно понять, что AJAX и REST не являются альтернативами для вашего варианта использования. AJAX означает асинхронный javascript и XML, поэтому, если вы используете javascript для загрузки данных после завершения запроса браузера, вы выполняете AJAX.

REST, с другой стороны, означает передачу представительного состояния, которая, как указал Стефан Билле, использует HTTP-запросы для передачи данных. Так что REST - это один из способов сделать AJAX. SOAP был бы еще один, но это оффтоп для вашего вопроса. Таким образом, ваш вопрос должен быть: «Какая технология лучше всего подходит для моего случая использования?»

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


Когда я использую Ajax для загрузки части веб-страницы, этот запрос AJAX представляет собой http-вызов серверу ... более конкретно ... он вызывает определенный метод в моем сервлете. Можно ли сказать, что в этом случае AJAX использует REST?
Каушик

Ну, это зависит от метода, который вы вызываете. Если метод, например, удовлетворяет ограничениям RESTful WebService ( en.wikipedia.org/wiki/Representational_state_transfer ), вы можете сказать да.
Lesstat

4

REST использует HTTP-глаголы GET, POST, PUT, DELETE, чтобы соответственно получать, вставлять, обновлять, удалять ресурсы на сервере. Например, GET с помощью url: controller / customer / {id}
. Альтернативой является добавление в контроллер таких методов, как GetCustomerById (id), InsertCustomer (customer), UpdateCustomer (customer), DeleteCustomer (customer). Это то, что известно как подход RPC. Например, GET с помощью url: controller / GetCustomerById? Id = {id}
Одно из отличий заключается в том, что REST-API является предсказуемым. Если вы знаете REST и знаете имя нужного вам ресурса (например, Customer), вы можете сразу же подключиться и использовать контроллер REST со стандартными глаголами.
При использовании RPC-подхода вам необходимо знать, какие методы используются на вашем контроллере, какие аргументы они принимают и т. Д. Эти сигнатуры могут варьироваться от контроллера к контроллеру, от приложения к приложению.
AJAX, с другой стороны, является просто асинхронным способом размещения вышеупомянутых запросов, будь то вызов REST или вызов RPC.


Альтернатива - все еще ОТДЫХ. Отдых определяется набором операций, а НЕ используемым протоколом.
Ян Худек
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.