2012-07-04 3 views
0

Quelle est la différence entreHttp méthodes différences

HTTPPOST 
HTTPDELETE 
HTTPPUT 
HTTPGET 

Normalement utilisé après et méthode get pour soumettre le formulaire et je les connais très bien, mais je veux savoir avec suppression et méthode mise quand et pourquoi ils peuvent être utilisés pour améliorer compétences de programmation

+0

oui, ça s'appelle une programmation reposante: http://shop.oreilly.com/product/9780596801694.do – fcalderan

+0

Pourquoi diable le vote en baisse? –

+0

@ F.Calderan: Non, ce n'est pas, ce n'est vraiment pas! ... http://roy.gbiv.com/untangled/2009/it-is-okay-to-use-post - "Les définitions de méthodes spécifiques n'ont tout simplement pas d'importance pour le style architectural REST" - (du type inventé REST). –

Répondre

1

Les différentes méthodes dépendent entièrement de la façon dont le serveur Web distant choisit de les interpréter. Il n'y a pas de signification fixe. Un serveur ne se soucie pas s'il voit GET ou POST; plutôt, le code qui finit par être exécuté pour desservir la requête fait (et peut décider de faire n'importe quoi, puisque c'est du code).

Le protocole HTTP donne une ligne directrice officielle pour ce type d'action chaque verbe est censé déclencher, ce qui est:

  • GET: récupérer une ressource
  • PUT: remplacer une ressource avec un autre, ou créer si elle n'existe pas
  • DELETE: supprime une ressource si elle existe
  • POST: peut faire n'importe quoi; généralement utilisé pour « ajouter » à une ressource

Cependant, cette cartographie est finalement régie par le code d'application et est généralement pas respectée par les applications Web (par exemple, vous verrez des suppressions logiques en cours d'adoption avec POST au lieu de SUPPRIMER).

La situation est meilleure quand on parle d'architectures REST sur HTTP.

+0

Il y a une signification fixe! http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html E.g. il serait important de vérifier les POST en double, mais il n'y a pas besoin de se soucier des GET, PUT ou DELETE en double, tant que la spécification est suivie. –

+1

@LeeKowalkowski: L'idempotence et la sécurité sont des attributs des différents verbes. Cela ne signifie pas que les verbes ont un sens inhérent. – Jon

+0

Huh? Vrai, mais ce ne sont que des tangentes avec lesquelles j'ai choisi d'élaborer, cela ne signifie pas que les verbes n'ont pas de signification inhérente, ce que j'ai couvert au début du commentaire en liant à "HTTP Method Definitions". C'est _why_ il y a une spécification en premier lieu. GET est donc _mean_ sûr et idempotent selon la spécification. C'est corrigé, c'est dans la spécification. Le problème est que les personnes implémentant GET ne sont pas sûres, donc ne suivent pas les spécifications. Ce n'est pas parce qu'il n'a pas de sens pour un serveur qu'il n'y a pas de sens. –

1

En bref:

  • GET = chercher une ressource.
  • POST = mise à jour d'une ressource. DELETE = supprimer une ressource.
  • PUT = créer/remplacer une ressource.

En HTML, seuls GET et POST sont autorisés. Un serveur HTTP de développement web typique ne fera rien à moins que vous ayez du code (ou de la configuration) pour spécifier ce que vous voulez qu'il fasse avec les différentes méthodes HTTP.

Rien ne vous empêche de mettre à jour les données utilisateur en réponse à une requête GET, mais ce n'est pas conseillé. Les navigateurs traitent différemment GET et POST, en ce qui concerne la mise en cache de la requête (un GET en cache sera automatiquement réémis, mais un POST en cache invitera l'utilisateur à le renvoyer) et de nombreux éléments HTML peuvent émettre des GET, les rendant dangereux pour mises à jour. Il existe également d'autres méthodes HTTP: http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol.

Beaucoup de personnes qui prétendent être RESTful vont confondre HTTP POST et PUT avec SQL UPDATE et INSERT. Il n'y a pas de corrélation directe, cela dépend toujours du contexte. Autrement dit, ce que signifie POST dépend entièrement de la ressource avec laquelle vous interagissez. Par exemple, créer une nouvelle entrée sur un blog pourrait être un POST pour le blog lui-même, ou un PUT pour une ressource subordonnée. Cependant, un PUT, by definition, doit toujours contenir la ressource entière.

En règle générale, vous ne permettrait pas à un client HTTP pour déterminer l'URI d'une nouvelle ressource, de sorte qu'un POST/blog serait plus sûr qu'un PUT à/blog/article-uri bien que HTTP ne répond des réponses appropriées Le serveur doit-il être incapable d'honorer l'URI voulu? (HTTP est juste une spécification, vous devez écrire le code pour le supporter, ou trouver un framework)

Mais comme vous pouvez toujours réaliser un PUT ou SUPPRIMER un cas d'utilisation en AFFICHANT une ressource parent responsable de ses subordonnés (c'est-à-dire POSTer un message dans/mailbox au lieu de le placer dans/mailbox/message-id), il n'est pas indispensable d'exposer publiquement les méthodes PUT ou DELETE. Vous pouvez améliorer vos compétences en programmation en adoptant les principes REST pour améliorer la visibilité des interactions au sein d'un système, il peut être plus simple de contextualiser vos interactions en termes de REST en ayant une interface uniforme, par exemple.

REST n'est pas HTTP si: http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm.

Questions connexes