Quando utilizzare REST per gestire le richieste e utilizzare AJAX per gestire le richieste [chiuso]


12

Sulla mia pagina web, se desidero visualizzare i menu a discesa dinamici (ad es. Nomi di città in base al paese selezionato), posso farlo utilizzando AJAX. Ma posso anche farlo usando una chiamata REST. Quindi quale dovrei usare?

Il mio problema è che in realtà non capisco la differenza tra REST e qualsiasi altra richiesta del browser HTTP (ovvero l'invio di un modulo). Ho esaminato le definizioni formali di REST e sembra identico a una richiesta HTTP. Quindi, in che modo REST è intrinsecamente diverso da AJAX?


6
Come hai indovinato, non si escludono a vicenda.
Seth Battin,

2
di solito useresti un'API REST quando alla tua applicazione accederà un'altra applicazione
Gian Acuna,

Non vedo la comparazione tra i due. AJAX è un'applicazione di diverse tecniche per implementare contenuti Web dinamici, mentre REST è uno stile architettonico.
jramoyo,

2
@downvoter --- perché l'odio?
Kaushik,

Risposte:


26

Posso farlo usando AJAX. Ma posso anche farlo usando una chiamata REST.

Uhm, no. Quei due sono completamente ortogonali. Se vuoi aggiornare la tua pagina con i dati che devi ottenere da un server, lo farai usando AJAX. Non c'è altro modo. E quella chiamata AJAX può usare REST o qualcos'altro.

Il mio problema è che non capisco davvero la differenza tra REST e una richiesta del browser HTTP. (Ovvero l'invio di un modulo). Ho esaminato le definizioni formali di REST e sembra una richiesta HTTP.

Una chiamata REST è sempre una richiesta HTTP. Sebbene possa essere utilizzato per gestire le normali chiamate del browser (come l'invio di moduli) e la restituzione di pagine HTML complete, di solito viene utilizzato per gestire le chiamate API che restituiscono solo dati (di solito in formato JSON).

Quindi perché ha un nome separato?

Poiché REST è uno stile specifico di utilizzo dell'HTTP, probabilmente lo usa come originariamente doveva essere usato, ma che la maggior parte delle persone non "capisce" e quindi veniva usato raramente per quasi 2 decenni.

In particolare, REST significa codificare quale entità si desidera recuperare o manipolare nell'URL stesso (di solito tramite un ID) e codificare quale azione si desidera eseguire su di esso nel metodo HTTP utilizzato (GET per il recupero, POST per la modifica, PUT per la creazione , ELIMINA per l'eliminazione).


6
REST non deve essere sempre su HTTP. Qualsiasi protocollo può essere REST se si adatta all'insieme di metodi. Ma nel contesto delle applicazioni web sarà ovviamente HTTP.
Jan Hudec,

10
@Jan Hudec: ci sono esempi reali di REST utilizzati con altri protocolli?
Michael Borgwardt,

6

Bene, penso che tu debba prima capire che AJAX e REST non sono realmente delle alternative per il tuo caso d'uso. AJAX sta per javascript asincrono e XML, quindi se si utilizza javascript per caricare i dati al termine della richiesta del browser, si sta eseguendo AJAX.

REST invece significa Rappresentational State Transfer che, come ha sottolineato Stefan Billet, utilizza le richieste HTTP per trasferire i dati. Quindi REST è in realtà un modo per fare AJAX. SOAP sarebbe un altro ma questo è fuori tema per la tua domanda. Quindi la tua domanda dovrebbe piuttosto essere: "Qual è la tecnologia migliore per il mio caso d'uso?"

In questo caso, consiglierei di pensare alla quantità di dati utilizzati nei menu a discesa. Se hai solo pochi elementi, potresti averli tutti nella tua pagina e usare javascript per mostrare quelli appropriati. Una seconda opzione potrebbe essere l'utilizzo di una chiamata REST con JSON come rappresentazione perché è facile da usare con JavaScript e molto leggero, il che ovviamente significherebbe anche fare AJAX.


Quando uso Ajax per caricare una parte della pagina Web, quella richiesta AJAX è una chiamata http al server ... più specificamente ... chiama un metodo specifico sul mio servlet. è sicuro dire che in questo caso AJAX sta usando REST?
Kaushik,

Bene dipende dal metodo che stai chiamando. Se il metodo ad esempio soddisfa i vincoli di un RESTful WebService ( en.wikipedia.org/wiki/Representational_state_transfer ) potresti dire di sì.
Lesstat,

4

REST utilizza i verbi HTTP GET, POST, PUT, DELETE per ottenere rispettivamente, inserire, aggiornare, eliminare risorse su un server. Ad esempio, OTTIENI con url: controller / customer / {id}
L'alternativa è l'aggiunta di metodi a un controller come GetCustomerById (id), InsertCustomer (cliente), UpdateCustomer (cliente), DeleteCustomer (cliente). Questo è ciò che è noto come approccio RPC. Ad esempio, OTTIENI con url: controller / GetCustomerById? Id = {id}
Una delle differenze è che un API REST è in qualche modo prevedibile. Se conosci REST e conosci il nome della risorsa desiderata (ad es. Cliente), puoi immediatamente saltare e utilizzare il controller REST con i verbi standard.
Con un approccio RPC, devi sapere quali sono i metodi sul tuo controller, che tipo di argomenti prendono, ecc. Queste firme possono variare da controller a controller, da app a app.
AJAX invece è solo un modo asincrono di inoltrare le richieste di cui sopra, sia come chiamata REST che come chiamata RPC.


L'alternativa è ancora REST. Il resto è definito dall'insieme di operazioni, NON dal protocollo utilizzato.
Jan Hudec,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.