# GET, POST und Idempotenz?



## frager (16. Aug 2006)

hallo, also ich kapier da was nicht genau. ein GET request is ja idempotent, was bedeutet, man kann dieses request so oft wiederholen, wie man möchte, ohne dabei unerwünschte effekte zu bekommen. also zum beispiel den preis eines autos kann man 1000 mal anfordern, das macht aber nix.  man holt (get) sich was vom server.

dann aber eben das POST request, welches man nicht so oft machen kann wie man will, zum beispiel ein auto kaufen, dass sollte man nur einmal machen und nich 1000 mal. man macht (postet) was auf dem server.

was ich aber nicht kapiere ist, dass es in der doGet() oder der doPost() methode mache, ist doch meine sache? also wenn in meiner doGet() ein auto gekauft wird, dann kaufe ich das doch auch bei jedem GET request? also ist es ja wurscht, was jetzt wie ausgelegt ist im http? :L 

hoffe, ihr wisst was ich meine?!

vielen dank  ???


----------



## SnooP (16. Aug 2006)

nene... GET should be idempotent!  ... das ist nen unterschied. Wie du schon festgestellt hast, ist es ja dir überlassen, was du in doGet reinschreibst.


----------



## frager (17. Aug 2006)

hi, es ist ein unterschied...das ist mir klar. aber wenn man dann mittels servlets oder irgendwas anderem eben in nem get request was an den daten ändert, dann ists doch wieder hinfällig? also stets irgendwo in einer spezifikation und die browser machen es auch so, aber was nützt es, wenn ichs dann eben mittels servlets oä. wieder anders machen kann? ein  request wird doch immer von irgendwas ausgewertet, da es ja sonst erstmal zustandslos ist.

 ???:L  ???:L  ???:L 

gruß


----------



## Leroy42 (17. Aug 2006)

Wie ich das sehe, haben sich die, die das HTTP spezifiziert haben, schon
dabei so etwas gedacht.

Es hat sich aber _kein Schwein darum gekümmert_, weswegen es de facto
heute keinen Unterschied macht.


----------



## SnooP (18. Aug 2006)

das mit dem Unterschied bezog sich bei mir auf das "should" ... es heißt demnach "should" und nicht "is"... von daher ist es guter Programierstil get Aufrufe idempotent zu gestalten.

Das Sicherstellen von Idempotenz bei Get wäre für den Server auch nicht gerade einfach... - ich vermute auch mal, dass hier auf den Sachverstand des jeweiligen Entwicklers vertraut wurde das richtig zu machen... und wenn jemand es denn gerne anders hätte, dann hat er jetzt auch die Freiheit das zu tun. Ich meine - es geht ja auch nicht gerade die Welt unter (hoffentlich), wenn man Get jetzt nicht seiteneffektfrei programmiert.


----------



## Jouhni (24. Aug 2006)

GET und POST haben ansich nichts damit zu tun, ob man das Auto kauft oder sich nur ansieht. Es sind einfach zwei Übertragungsmethoden für einen Request. Bei GET werden die Parameter mit der URL übermittelt. Beispiel:

http://www.beispiel.de?parameter=wert

Bei POST werden die Parameter im Header des Requests mit übertragen.

Um es auf den Punkt zu bringen: Du kannst sowohl mit GET als auch POST sowohl ein Auto kaufen als auch ansehen.

Gruß,
Jouhni


----------

