web-dev-qa-db-fra.com

Quelle est la bonne façon de se reposer?

Tout le monde fait de nos jours [~ # ~ # ~] SOA [~ # ~] , même si certains ne comprennent pas réellement ce qui est tout à propos. Donc, ils le font mal. En utilisant cela comme analogie, je sais quoi [~ # ~] repose [~ # ~ ~] est (ou au moins je pense que je pense faire) et je veux en faire une partie. mais je veux le faire correctement.

Donc, ma question est de savoir quelle est la bonne façon de se reposer?

36
JohnDoDo

Eh bien, il existe de nombreuses façons d'apprendre à construire une application Web reposante et non, il n'y a pas de bonne façon unique. Reposant n'est pas une norme mais utilise un ensemble de normes (HTTP, URI, type MIME, ...).

Commencez avec ceci: Comment j'ai expliqué REST à ma femme

Ensuite, procédez avec ceci: Cookbook Services Web reposant

Et ensuite mettre tout votre temps pour développer des applications Web car la meilleure façon d'apprendre est de faire des expériences et vous pouvez apprendre tellement de vos erreurs;)

Ne vous inquiétez pas si vos premières applications Web ne seront pas totalement reposantes: vous trouverez la façon de le faire!

Ainsi, citant Obi-Wan Kenobi, "Que la force soit avec toi!" ;)

[~ # ~] Edit [~ # ~ #]

Ok, laissez-moi être plus précis. Tu veux faire du webapp reposant, hein ? Eh bien, comme je l'ai dit, il y a beaucoup de façons de le faire, mais c'est la principale ligne directrice.

Définition

reste (transfert d'état de représentation) est un style d'architecture logicielle pour le système distribué (comme www). Ce n'est pas une norme mais il utilise un ensemble de normes: http, ajax, html, uri, type mime, etc. Nous parlons de représentation d'une ressource, pas sur une ressource elle-même. Pris de 'comment j'ai expliqué REST à ma femme':

Femme : une page Web est une ressource ?

Ryan : genre de. Une page Web est une représentation d'une ressource. Les ressources sont juste des concepts.

Contraintes de l'architecture

  • client-serveur : le client et le serveur sont séparés par l'interface uniforme (décrite ci-dessous).
  • apatrides : la communication client serveur est effectuée sans enregistrer un état client particulier sur le serveur.
  • CACHABLE : le client peut avoir une cache de réponses de demandes déjà effectuées.
  • Système en couches : Le client ne sait pas s'il est directement connecté à un serveur final ou si la communication est effectuée via des intermédiaires.

Interface uniforme

  • Identification des ressources : Chaque ressource doit être identifiée par une URI.
  • Protocole : Afin d'obtenir un client de communication et un serveur, un protocole doit être effectué auparavant. Chaque demande peut avoir le bon type de mime (application/xml, texte/html, application/rdf + xml, etc.), les en-têtes de droite et la méthode HTTP droite (voir la description du crud ci-dessous).

Crud

Ok, nous avons vu cela pour identifier les ressources que nous pouvons utiliser URI, mais nous avons besoin de quelque chose d'autre pour les actions (ajouter, modifier, modifier, etc.): une excellente bienvenue à CRUD (Créer, lire, mettre à jour et supprimer).

  • Créer { http: post} { SQL: insert} => Créer une nouvelle ressource
  • Lire { http: obtenez} { SQL: SELECT} => obtenir une ressource
  • Mise à jour { http: mettre} { SQL: mise à jour} => Modifier une ressource
  • Supprimer { http: Supprimer} { SQL: Supprimer} => Supprimer une ressource

Maintenant, concernant Publier et supprimer, certains problèmes techniques pouvaient apparaître (vous les obtiendrez avec le formulaire HTML): Les développeurs contournent souvent ce problème à l'aide de POST pour chaque demande "Met" et "Supprimer". Officiellement, vous devez utiliser mettre et supprimer. Au fait, faites ce que vous voulez. Mon expérience me pousse à utiliser POST et obtenez-en à chaque fois.

--- la partie suivante doit être utilisée mais ce n'est pas un lien de repos: il concerne les données liées ---

Uri

URI abstrait des détails techniques! Dites au revoir à Uri comme suit:

http://www.example.com/index.php?query=search&id=9823&date=08272012

Réception URI! Prenez le lien ci-dessus et changez-le comme suit:

http://www.example.com/search/2012/08/27/9823

C'est beaucoup mieux, hein? Cela pourrait être fait par:

Une autre chose: utiliser différents URI pour représenter différentes ressources:

Faites attention : environ.html et environ.rdf ne sont pas des fichiers! Ils pourraient être le résultat d'une transformation XSLT!

Négociation de contenu

Si vous avez atteint ce point, félicitations! Probablement, vous êtes prêt à obtenir plus de concepts abstraits car nous entrons dans les détails techniques de la bande sémantique;) Eh bien, lorsque votre client veut une ressource, elle effectue généralement la demande suivante:

GET http://www.example.com/about
Accept: application/rdf+xml

Mais le serveur ne répondra pas avec le fichier environ.rdf, car il a une URI différente ( http://www.example.com/about.rdf ). Alors, regardons le modèle 303 ! Le serveur reviendra ceci:

303 See Other
Location: http://www.example.com/about.rdf

Et le client suivra le lien renvoyé comme suit:

GET http://www.example.com/about.rdf
Accept: application/rdf+xml

Enfin, le serveur retournera la ressource demandée:

200 OK
about.rdf

Ne vous inquiétez pas: votre application client ne fera rien de cela! Le motif 303 doit être effectué par l'application Server et votre navigateur fera le reste;)

Conclusion

Souvent, la théorie est loin, loin de la pratique. Oui, vous savez maintenant comment concevoir et développer une application reposante, mais la ligne directrice ci-dessus n'est qu'un indice. Vous trouverez votre meilleur moyen de créer des applications Web et probablement ce ne sera probablement pas la même chose que la théorie veut. Ne vous souciez pas: D!

Bibliographie

Services Web reposants, Sameer Tyagi

Les API de repos doivent être hypertextes à base d'hypertexte, Roy Thomas Fielding

Services Web reposants: les bases, Alex Rodriguez

Webber REST Workflow

30
Wilk

A REST Bible Bible ou quelque chose de ....

Aucun livre biblique nécessaire; J'ai eu les mêmes questions exactes et j'ai appris tout ce dont j'avais besoin ou que je voulais savoir sur REST en lisant ces trois articles:

  1. Introduction d'un débutant à http et repose de net tuts +
  2. Services Web reposants: les bases d'IBM DeveloperWorks
  3. HTTP reposant dans la pratique de l'infoQ

Mais je veux le faire correctement.

Comme vous allez lire dans les articles ci-dessus, la clé est de penser aux pièces accessibles de votre application en tant que "ressources" pouvant être créées, récupérées, mises à jour ou supprimées à l'aide des "verbes" http existants: obtenir, mettre, poster , EFFACER.

aussi, connais la différence entre Met et Post , et quand les utiliser. Obtenez, mettre et supprimer et supprimer des transactions idempotentes, POST ne devrait pas.

Effectuez également une utilisation appropriée des codes d'état HTTP lors de la communication sur le client.

5
CFL_Jeff