Je vais apprendre les services Web RESTful (il vaut mieux dire que je vais devoir le faire car cela fait partie du programme de master CS).
J'ai lu des informations sur Wikipédia et j'ai également lu un article sur REST sur Sun Developer Network et je vois que ce n'est pas une technologie facile, il existe des cadres spéciaux pour créer des applications RESTful, et il est souvent comparé aux services Web SOAP et le programmeur doit comprendre quand utiliser SOAP et quand REST peut être une bonne approche.
Je me souviens qu'il y a plusieurs années, SOAP était très populaire (à la mode?) Et l'élément «SOAP» devait être présent dans tout bon CV. Mais dans la pratique, il a été utilisé très rarement et pour atteindre des objectifs très simples.
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).
Pouvez-vous me donner quelques exemples où REST devrait être utilisé et pourquoi nous ne pouvons pas faire de même sans REST (ou pourquoi nous devrions passer beaucoup plus de temps à faire de même sans REST)?
UPD : Malheureusement, je ne vois pas d'arguments concrets qui peuvent me surprendre dans les premiers commentaires. Faites-moi penser que REST est une technologie géniale!
J'aimerais voir des réponses comme celle-ci:
Je développais une autre application HelloWorld complexe et nous devons transférer beaucoup de / minuscules données et j'ai proposé une solution REST à mon collègue de travail:
- Oh putain! Jonny, nous devrions certainement utiliser REST pour implémenter cette application!
- Oui, Billy, nous pouvons utiliser REST, mais nous ferions mieux d'utiliser SOAP. Croyez-moi car je sais quelque chose sur le développement d'applications HelloWorld.
- Mais SOAP est une technologie démodée du siècle dernier et nous pouvons en utiliser une meilleure.
- Billy, êtes-vous prêt à passer 3 jours à expérimenter REST? Nous pouvons le faire avec SOAP en 2 heures.
- Oui, je suis sûr que nous passerons encore plus de temps à atteindre la même sécurité / performance / / évolutivité / quoi que ce soit d'autre avec SOAP. Je suis sûr que les applications HelloWorld devraient être développées uniquement avec REST à partir de maintenant.
la source
Réponses:
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
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.
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.
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.
la source
REST a été lancé, à ma connaissance, par la thèse de Roy Fielding, Architectural Styles and the Design of Network-based Software Architectures , qui vaut la peine d'être lue si vous ne l'avez pas regardée.
En haut de la thèse se trouve une citation:
Presque tout le monde se sent en paix avec la nature: écouter les vagues de l'océan contre le rivage, au bord d'un lac immobile, dans un champ d'herbe, sur une lande balayée par le vent. Un jour, quand nous aurons appris à nouveau la voie intemporelle, nous ressentirons la même chose à propos de nos villes, et nous nous sentirons aussi en paix en eux, que nous le faisons aujourd'hui en marchant au bord de l'océan, ou allongés dans les hautes herbes d'un Prairie.
- Christopher Alexander, La manière intemporelle de construire (1979)
Et cela résume vraiment la situation. REST est à bien des égards plus élégant.
SOAP est un protocole au-dessus de HTTP, il contourne donc de nombreuses conventions HTTP pour créer de nouvelles conventions dans SOAP, et est à bien des égards redondant avec HTTP. HTTP, cependant, est plus que suffisant pour récupérer, rechercher, écrire et supprimer des informations via HTTP, et c'est en grande partie ce qu'est REST. Étant donné que REST est construit avec HTTP plutôt que par dessus, cela signifie également que les logiciels qui souhaitent s'y intégrer (comme un navigateur Web) n'ont pas besoin de comprendre SOAP pour le faire, juste HTTP, qui doit être le plus largement compris et intégré au protocole utilisé à ce stade.
la source
D' ici :
Avantages REST:
Vérifiez également ceci :
la source
Je peux dire en toute sécurité que j'ai passé beaucoup de temps à comprendre cela en tant que débutant, mais c'est le meilleur lien pour commencer avec REST à partir de zéro! http://www.codeproject.com/Articles/21174/Everything-About-REST-Web-Services-What-and-How-Pa
Juste pour vous attirer,
la source
Voici quelques idées:
En fin de compte, REST supprime la plupart des décisions de conception et de mise en œuvre les plus longues et les plus controversées du flux de travail de votre équipe. Cela déplace votre attention de la mise en œuvre de votre service à sa conception . Et il le fait sans empiler gobbledygook sur le protocole HTTP.
la source
MakeOrder
des URL pourConfirmOrder
etCancelOrder
? Le client ne sait-il pas déjà comment appeler le service, mais doit plutôt être basé sur les données?La plupart des réponses "pro" à propos de REST semblent provenir de personnes qui n'ont jamais développé de service Web SOAP ou de client utilisant un environnement qui fournit les outils appropriés pour la tâche. Ils se plaignent de problèmes que je n'ai tout simplement jamais rencontrés, en utilisant Visual Studio .NET et Rational Web Developer d'IBM. Je suppose que si vous devez développer des services Web ou des clients dans un langage de script, ou dans un autre langage avec peu ou pas de support d'outils, ce sont des plaintes valables.
Je dois également admettre que plusieurs des points «pro» semblent être des choses qui pourraient être vraies - mais que je n'ai jamais vu d'exemple illustrant leur valeur. En particulier, j'apprécierais grandement que quelqu'un publie un commentaire contenant un lien vers un bon exemple de service Web REST. Cela doit être celui qui utilise plusieurs niveaux de ressources, éventuellement dans une hiérarchie, et qui utilise correctement les types de médias. Peut-être que si je regarde un bon exemple, je comprendrai, dans ce cas, je reviendrai ici et je l'admettrai.
la source
Pour ajouter une touche un peu prosaïque aux réponses déjà données, la raison pour laquelle nous utilisons les services REST là où je suis est que si vous savez que vous pouvez donner une URL à un partenaire commercial et savoir qu'il recevra, en retour, un bloc de XML bien présenté. peu importe qu'ils travaillent en .Net xx, PHP, Python, Java, Ruby ou Dieu sait ce que cela réduit considérablement les maux de tête.
Cela signifie également que du côté des non-techniciens, nos commerciaux peuvent se vanter de notre API polyvalente auprès des gens sans craindre de ressembler à des muppets complets.
Outre les avantages techniques, tout ce qu'il est facile pour un non-technicien d'expliquer, de démontrer et de se sentir en confiance est une bonne chose. SOAP, bien que tout aussi cool pour les techniciens, est beaucoup moins accessible par les non-techniciens et n'est donc pas aussi facile à «vendre».
J'ai tendance à remarquer que les choses que les non-techniciens peuvent faire tourner la tête ont tendance à rester. Je doute donc que REST en tant que technique soit susceptible d'être aussi sensible que SOAP aux caprices de la mode.
Mais tout ce qui concerne le fait de ne rien mettre dans un service REST qui devrait être verrouillé est double, ne serait-ce que parce que la technologie est si facilement comprise par des personnes qui ne sont pas aussi techniquement intéressées.
la source
REST est un style d'architecture pour la conception d'applications en réseau. L'idée est que, plutôt que d'utiliser des mécanismes complexes tels que CORBA, RPC ou SOAP pour se connecter entre les machines, le simple HTTP est utilisé pour faire des appels entre les machines.
À bien des égards, le World Wide Web lui-même, basé sur HTTP, peut être considéré comme une architecture basée sur REST. Les applications RESTful utilisent des requêtes HTTP pour publier des données (créer et / ou mettre à jour), lire des données (par exemple, effectuer des requêtes) et supprimer des données. Ainsi, REST utilise HTTP pour les quatre opérations CRUD (Créer / Lire / Mettre à jour / Supprimer).
REST est une alternative légère aux mécanismes tels que RPC (Remote Procedure Calls) et Web Services (SOAP, WSDL, et al.). Plus tard, nous verrons à quel point REST est beaucoup plus simple.
En dépit d'être simple, REST est complet; il n'y a pratiquement rien que vous puissiez faire dans les services Web qui ne puisse pas être fait avec une architecture RESTful. REST n'est pas un "standard". Il n'y aura jamais de recommandation W3C pour REST, par exemple. Et bien qu'il existe des frameworks de programmation REST, travailler avec REST est si simple que vous pouvez souvent «rouler vous-même» avec des fonctionnalités de bibliothèque standard dans des langages comme Perl, Java ou C #.
la source