REST doit être utilisé s'il est très important pour vous de minimiser le couplage entre les composants client et serveur dans une application distribuée.
Cela peut être le cas si votre serveur va être utilisé par de nombreux clients différents sur lesquels vous n'avez pas de contrôle. Cela peut également être le cas si vous souhaitez pouvoir mettre à jour régulièrement le serveur sans avoir besoin de mettre à jour le logiciel client.
Je peux vous assurer que la réalisation de ce faible niveau de couplage n'est pas facile à faire . Il est essentiel de suivre toutes les contraintes de REST pour réussir. Le maintien d'une connexion purement sans état est difficile. Choisir les bons types de médias et insérer vos données dans les formats est délicat. Créer vos propres types de médias peut être encore plus difficile.
L'adaptation d'un comportement de serveur riche dans l'interface HTTP uniforme peut être déroutante et parfois semble pédante par rapport à l'approche RPC relativement simple.
Malgré les difficultés, les avantages sont que vous disposez d'un service qu'un développeur client devrait être capable de comprendre facilement en raison de l'utilisation cohérente du protocole HTTP. Le service doit être facilement détectable grâce à l'hypermédia et le client doit être extrêmement résistant aux modifications sur le serveur .
Les avantages de l'hypermédia et le fait d'éviter l'état de session rendent l'équilibrage de charge simple et le partitionnement des services faisable . La stricte conformité aux règles HTTP rend la disponibilité d'outils comme les débogueurs et les proxys de mise en cache une chose merveilleuse.
Mettre à jour
Il me semble que REST est un autre «dernier mot de la mode» (ou je peux me tromper car je n'ai jamais vu REST en pratique).
Je pense que REST est devenu à la mode parce que les gens qui tentent de faire des projets de type SOA ont constaté qu'en utilisant la pile SOAP, ils ne réalisaient pas les avantages promis. Les gens continuent de se tourner vers le Web comme exemple de méthodologies d'intégration simples. Malheureusement, je pense que les gens sous-estiment la quantité de planification et de prévoyance nécessaire à la création du Web et ils simplifient à l'extrême ce qui doit être fait pour permettre le type de réutilisation fortuite qui se produit sur le Web.
Vous dites que vous n'avez jamais vu REST dans la pratique, mais cela ne peut pas être vrai si vous utilisez un navigateur Web. Le navigateur Web est un client REST.
- Pourquoi n'avez-vous pas besoin de faire une mise à jour du navigateur lorsque quelqu'un modifie du code HTML sur un site Web?
- Pourquoi puis-je ajouter un nouvel ensemble complet de pages à un site Web et que le «client» peut toujours accéder à ces nouvelles pages sans mise à jour?
- Pourquoi n'ai-je pas besoin de fournir un "langage de description de service" au navigateur Web pour lui dire lorsqu'il accède à http://example.org/images/cat que le type de retour sera une image jpeg et quand vous y allez à
http://example.org/description/cat
le type de retour sera text / html?
- Pourquoi puis-je utiliser un navigateur Web pour visiter des sites qui n'existaient pas au moment de la sortie du navigateur? Comment le client peut-il connaître ces sites?
Celles-ci peuvent sembler stupides, mais si vous connaissez la réponse, vous pouvez commencer à voir en quoi consiste REST. Regardez StackOverflow pour plus d'avantages de REST. Lorsque je regarde une question, je peux ajouter cette page à mes favoris ou envoyer l'URL à un ami et il peut voir les mêmes informations. Il n'a pas besoin de naviguer sur le site pour trouver cette question.
StackOverflow utilise une variété de services OpenId pour l'authentification, gravatar.com pour les images d'avatar, google-analytics et Quantserve pour les informations analytiques. Ce type d'intégration multi-entreprises est le type de chose dont le monde SOAP ne rêve que . L'un des meilleurs exemples est le fait que les bibliothèques jQuery utilisées pour gérer l'interface utilisateur StackOverflow sont extraites du réseau de diffusion de contenu de Google. Le fait que SO puisse diriger le client (c'est-à-dire votre navigateur Web) pour télécharger du code à partir d'un site tiers pour améliorer les performances témoigne du faible couplage entre le client Web et le serveur.
Ce sont des exemples d'architecture REST au travail.
Maintenant, certains sites Web / applications enfreignent les règles de REST et le navigateur ne fonctionne pas comme prévu.
- Le tristement célèbre problème de bouton retour
est causé par l'utilisation de l'état de session côté serveur.
- L'équilibrage de charge peut devenir un problème lorsque vous avez un état de session côté serveur.
- Les applications Flash empêchent souvent l'URL d'identifier spécifiquement une représentation.
- L'autre problème qui brise les navigateurs Web est la mauvaise conformité aux normes de type de média. Nous entendons constamment dire comment IE6 doit être tué. Le problème, c'est que les normes n'ont pas été correctement suivies ou ont été ignorées pour une raison quelconque.
- L'utilisation de sessions de connexion est à l'origine de nombreuses failles de sécurité.
REST est partout. C'est la partie du Web qui le fait bien fonctionner. Si vous souhaitez créer des applications distribuées qui peuvent évoluer comme le Web, être résilient au changement comme le Web et promouvoir la réutilisation comme le Web l'a fait, puis suivez les mêmes règles que lors de la création de navigateurs Web.