Quand utiliser REST pour gérer les demandes vs utiliser AJAX pour gérer les demandes [fermé]

12

Sur ma page Web, si je souhaite afficher des listes déroulantes dynamiques (par exemple, les noms de villes en fonction du pays sélectionné), je peux le faire en utilisant AJAX. Mais je peux aussi le faire en utilisant un appel REST. Alors, que dois-je utiliser?

Mon problème est que je ne comprends vraiment pas la différence entre REST et toute autre demande de navigateur HTTP (alias un formulaire soumis). J'ai regardé les définitions formelles de REST et il semble identique à une requête HTTP. En quoi REST est-il intrinsèquement différent d'AJAX?

Kaushik
la source
6
Comme vous l'avez deviné, ils ne s'excluent pas du tout.
Seth Battin
2
vous utiliseriez généralement une API REST lorsque votre application est accessible par une autre application
Gian Acuna
Je ne vois pas la comparaison entre les deux. AJAX est une application de plusieurs technologies pour implémenter du contenu Web dynamique, tandis que REST est un style architectural.
jramoyo
2
@downvoter --- pourquoi la haine?
Kaushik

Réponses:

26

Je peux le faire en utilisant AJAX. Mais je peux aussi le faire en utilisant un appel REST.

Um non. Ces deux sont complètement orthogonaux. Si vous souhaitez mettre à jour votre page avec les données que vous devez obtenir d'un serveur, vous le ferez en utilisant AJAX. Il n'y a pas d'autre moyen. Et cet appel AJAX peut utiliser REST, ou autre chose.

Mon problème est que je ne comprends vraiment pas la différence entre REST et une demande de navigateur HTTP (alias un formulaire soumis). J'ai regardé les définitions formelles de REST et cela ressemble à une requête HTTP.

Un appel REST est toujours une requête HTTP. Bien qu'il puisse être utilisé pour gérer les appels réguliers du navigateur (comme les soumissions de formulaires) et renvoyer des pages HTML complètes, il est généralement utilisé pour gérer les appels d'API qui renvoient uniquement des données (généralement au format JSON).

Alors pourquoi il a un nom distinct?

Parce que REST est un style spécifique d'utilisation de HTTP, sans doute en l'utilisant tel qu'il était initialement destiné à être utilisé, mais que la plupart des gens n'ont pas "obtenu" et a donc été rarement utilisé pendant près de 2 décennies.

Plus précisément, REST signifie encoder l'entité que vous souhaitez récupérer ou manipuler dans l'URL elle-même (généralement via un ID) et encoder l'action que vous souhaitez effectuer dessus dans la méthode HTTP utilisée (GET pour la récupération, POST pour la modification, PUT pour la création , SUPPRIMER pour supprimer).

Michael Borgwardt
la source
6
REST ne doit pas toujours être sur HTTP. Tout protocole peut être REST s'il correspond à l'ensemble des méthodes. Mais dans le contexte de l'application Web, ce sera bien sûr HTTP.
Jan Hudec
10
@Jan Hudec: Existe-t-il des exemples concrets d'utilisation de REST avec d'autres protocoles?
Michael Borgwardt
6

Eh bien, je pense que vous devez d'abord comprendre que AJAX et REST ne sont pas vraiment des alternatives à votre cas d'utilisation. AJAX signifie javascript asynchrone et XML, donc si vous utilisez javascript pour charger des données une fois la demande du navigateur terminée, vous faites AJAX.

REST, d'autre part, représente le transfert d'état représentatif qui, comme l'a souligné Stefan Billet, utilise des requêtes HTTP pour transférer des données. Donc, REST est en fait une façon de faire AJAX avec. SOAP en serait un autre, mais c'est hors sujet pour votre question. Votre question devrait donc plutôt être: "Quelle technologie est la meilleure pour mon cas d'utilisation?"

Dans ce cas, je recommanderais de réfléchir à la quantité de données utilisées dans vos listes déroulantes. Si vous n'avez que peu d'éléments, vous pouvez les avoir tous dans votre page et utiliser simplement javascript pour afficher ceux qui conviennent. Une deuxième option pourrait être d'utiliser un appel REST avec JSON comme représentation car il est facile à utiliser avec javascript et très léger, ce qui bien sûr signifierait également faire AJAX.

Lesstat
la source
Lorsque j'utilise Ajax pour charger une partie de la page Web, cette demande AJAX est un appel http au serveur ... plus précisément ... il appelle une méthode spécifique sur ma servlet. est-il sûr de dire que dans ce cas, AJAX utilise REST?
Kaushik
Eh bien, cela dépend de la méthode que vous appelez. Si la méthode remplit par exemple les contraintes d'un WebService RESTful ( en.wikipedia.org/wiki/Representational_state_transfer ), vous pouvez le dire oui.
Lesstat
4

REST utilise les verbes HTTP GET, POST, PUT, DELETE pour obtenir, insérer, mettre à jour et supprimer respectivement des ressources sur un serveur. Par exemple GET avec url: contrôleur / client / {id}
L'alternative consiste à ajouter des méthodes à un contrôleur telles que GetCustomerById (id), InsertCustomer (client), UpdateCustomer (client), DeleteCustomer (client). C'est ce que l'on appelle une approche RPC. Par exemple, GET avec url: controller / GetCustomerById? Id = {id}
L'une des différences est qu'une API REST est un peu prévisible. Si vous connaissez REST et que vous connaissez le nom de la ressource que vous souhaitez (par exemple Client), vous pouvez immédiatement vous connecter et utiliser le contrôleur REST avec les verbes standard.
Avec une approche RPC, vous devez savoir quelles méthodes sont sur votre contrôleur, quel type d'arguments elles prennent, etc. Ces signatures peuvent varier d'un contrôleur à l'autre, d'une application à l'autre.
AJAX, d'autre part, n'est qu'un moyen asynchrone de placer les demandes susmentionnées, que ce soit en tant qu'appel REST ou appel RPC.

Stefan Billiet
la source
L'alternative est toujours REST. Le repos est défini par l'ensemble des opérations, PAS le protocole utilisé.
Jan Hudec