Cuándo usar REST para manejar solicitudes vs usar AJAX para manejar solicitudes [cerrado]

12

En mi página web, si deseo mostrar menús desplegables dinámicos (por ejemplo, nombres de ciudades basados ​​en el país seleccionado), puedo hacerlo usando AJAX. Pero también puedo hacerlo usando una llamada REST. Entonces, ¿cuál debo usar?

Mi problema es que realmente no obtengo la diferencia entre REST y cualquier otra solicitud de navegador HTTP (también conocido como envío de formulario). He mirado las definiciones formales de REST y parece idéntico a una solicitud HTTP. Entonces, ¿cómo es REST inherentemente diferente de AJAX?

Kaushik
fuente
66
Como habrás adivinado, no son mutuamente excluyentes en absoluto.
Seth Battin
2
normalmente usaría una API REST cuando otra aplicación acceda a su aplicación
Gian Acuna
No veo la comparación entre los dos. AJAX es una aplicación de varias técnicas para implementar contenido web dinámico, mientras que REST es un estilo arquitectónico.
jramoyo
2
@downvoter --- ¿por qué el odio?
Kaushik

Respuestas:

26

Puedo hacerlo usando AJAX. Pero también puedo hacerlo usando una llamada REST.

Mmm no. Esos dos son completamente ortogonales. Si desea actualizar su página con los datos que debe obtener de un servidor, lo hará utilizando AJAX. No hay otra manera. Y esa llamada AJAX puede usar REST, o algo más.

Mi problema es que realmente no obtengo la diferencia entre REST y una solicitud de navegador HTTP (también conocido como envío de formulario). He mirado las definiciones formales de REST y parece una solicitud HTTP.

Una llamada REST es una solicitud HTTP, siempre. Aunque se puede usar para manejar llamadas regulares del navegador (como envíos de formularios) y devolver páginas HTML completas, generalmente se usa para manejar llamadas API que solo devuelven datos (generalmente en formato JSON).

Entonces, ¿por qué tiene un nombre diferente?

Debido a que REST es un estilo específico de usar HTTP, podría decirse que lo usó como estaba destinado originalmente para ser utilizado, pero que la mayoría de la gente no "entendió" y, por lo tanto, rara vez se usó durante casi 2 décadas.

Específicamente, REST significa codificar qué entidad desea recuperar o manipular en la propia URL (generalmente a través de una ID) y codificar qué acción desea realizar en él en el método HTTP utilizado (GET para recuperar, POST para cambiar, PUT para crear , BORRAR para borrar).

Michael Borgwardt
fuente
66
REST no tiene que estar siempre sobre HTTP. Cualquier protocolo puede ser REST si se ajusta al conjunto de métodos. Pero en el contexto de la aplicación web será HTTP, por supuesto.
Jan Hudec
10
@ Jan Hudec: ¿Hay ejemplos del mundo real de REST que se utilizan con otros protocolos?
Michael Borgwardt
6

Bueno, creo que primero debe comprender que AJAX y REST no son realmente alternativas para su caso de uso. AJAX significa JavaScript asincrónico y XML, por lo que si está utilizando JavaScript para cargar datos después de que la solicitud del navegador haya finalizado, está haciendo AJAX.

REST, por otro lado, significa Transferencia de estado representacional que, como señaló Stefan Billet, utiliza solicitudes HTTP para transferir datos. Entonces REST es en realidad una forma de hacer AJAX con. SOAP sería otro, pero este es un tema para su pregunta. Entonces, su pregunta debería ser: "¿Qué tecnología es la mejor para mi caso de uso?"

En este caso, recomendaría pensar en la cantidad de datos utilizados en sus menús desplegables. Si solo tiene algunos elementos, podría tenerlos todos en su página y simplemente usar javascript para mostrar los apropiados. Una segunda opción podría ser usar una llamada REST con JSON como representación porque es fácil de usar con javascript y muy liviano, lo que por supuesto también significaría hacer AJAX.

Lesstat
fuente
Cuando uso Ajax para cargar una parte de la página web, esa solicitud de AJAX es una llamada http al servidor ... más específicamente ... llama un método específico en mi servlet. ¿Es seguro decir que en este caso AJAX está usando REST?
Kaushik
Bueno, depende del método que estés llamando. Si el método, por ejemplo, cumple las restricciones de un servicio web RESTful ( en.wikipedia.org/wiki/Representational_state_transfer ), podría decir que sí.
Lesstat
4

REST está utilizando los verbos HTTP GET, POST, PUT, DELETE para obtener, insertar, actualizar y eliminar recursos en un servidor respectivamente. Por ejemplo, GET with url: controller / customer / {id}
La alternativa es agregar métodos a un controlador como GetCustomerById (id), InsertCustomer (cliente), UpdateCustomer (cliente), DeleteCustomer (cliente). Esto es lo que se conoce como un enfoque RPC. Por ejemplo, OBTENER con url: controller / GetCustomerById? Id = {id}
Una de las diferencias es que una API REST es predecible. Si conoce REST y conoce el nombre del recurso que desea (por ejemplo, Cliente), puede saltar de inmediato y usar el controlador REST con los verbos estándar.
Con un enfoque RPC, debe saber qué métodos hay en su controlador, qué tipo de argumentos toman, etc. Estas firmas pueden variar de un controlador a otro, de una aplicación a otra.
AJAX, por otro lado, es solo una forma asíncrona de colocar las solicitudes antes mencionadas, ya sea como una llamada REST o una llamada RPC.

Stefan Billiet
fuente
La alternativa sigue siendo REST. El descanso se define por el conjunto de operaciones, NO por el protocolo utilizado.
Jan Hudec