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


12

Якщо я хочу відобразити динамічні спадні місця (наприклад, назви міст на основі вибраної країни), я можу це зробити за допомогою AJAX. Але я також можу це зробити за допомогою REST-дзвінка. Отже, що я повинен використовувати?

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


6
Як ви здогадалися, вони взагалі не виключають один одного.
Сет Беттін

2
Ви зазвичай використовуєте API REST, коли до вашої програми звертається інша програма
Gian Acuna

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

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

Відповіді:


26

Я можу це зробити за допомогою AJAX. Але я також можу це зробити за допомогою REST-дзвінка.

Гм, ні. Ці два є абсолютно ортогональними. Якщо ви хочете , щоб оновити сторінку з даними ви повинні отримати від сервера, ви будете робити це з допомогою AJAX. Іншого шляху немає. А цей AJAX-дзвінок може використовувати REST або щось інше.

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

REST виклик є запит HTTP, завжди. Хоча він може використовуватися для обробки звичайних дзвінків у браузері (як-от подання форми) та повернення повної HTML-сторінки, він зазвичай використовується для обробки дзвінків API, які повертають лише дані (зазвичай у форматі JSON).

То чому воно має окрему назву?

Оскільки REST - це специфічний стиль використання HTTP, можливо, використовуючи його так, як спочатку передбачалося використовувати, але який більшість людей не "отримував" і тому рідко використовувався протягом майже 2 десятиліть.

Зокрема, 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 ), ви можете сказати так.
Лестат

4

REST використовує HTTP дієслова GET, POST, PUT, DELETE відповідно, щоб отримати, вставити, оновити, видалити ресурси на сервері. Наприклад, GET з URL-адресою: контролер / замовник / {id}
Альтернативою є додавання методів до таких контролерів, як GetCustomerById (id), InsertCustomer (клієнт), UpdateCustomer (замовник), DeleteCustomer (клієнт). Це те, що відомо як підхід RPC. Наприклад, GET з url: controller / GetCustomerById? Id = {id}
Однією з відмінностей є те, що api REST є таким, що передбачувано. Якщо ви знаєте REST і знаєте назву потрібного ресурсу (наприклад, клієнта), ви можете негайно зайти і скористатися контролером REST зі стандартними дієсловами.
При підході RPC вам потрібно знати, які методи є у вашому контролері, які аргументи вони приймають тощо. Ці підписи можуть відрізнятися від контролера до контролера, від програми до програми.
З іншого боку, AJAX - це лише асинхронний спосіб розміщення вищезазначених запитів, будь то виклик REST або виклик RPC.


Альтернатива як і раніше REST. Відпочинок визначається набором операцій, а не використовуваним протоколом.
Ян Худек
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.