<p>πρόσφατα έχω εμπλακεί με την php/ajax/jquery και μου φαίνεται ότι ένα σημαντικό μέρος αυτών των τεχνολογιών είναι εκείνο του <code>post</code> και <code>get</code>.</p><p>πρώτον, ποια είναι η διαφορά μεταξύ <code>post</code> και <code>get</code>; μέσω του πειραματισμού, γνωρίζω ότι το <code>get</code> προσδίδει τις μεταβλητές επιστροφής και τις τιμές τους στη συμβολοσειρά διευθύνσεων url</p><pre><code>website.com/directory/index.php?name=yourname&amp;bday=yourbday </code></pre><p>αλλά <code>post</code> δεν το κάνει.</p><p>έτσι, είναι αυτή η μόνη διαφορά ή υπάρχουν συγκεκριμένοι κανόνες ή συμβάσεις για τη χρήση του ενός ή του άλλου;</p><p>δεύτερον, έχω δει <code>post</code> και <code>get</code> εκτός php: επίσης στο ajaxκαι το jquery. πώς <code>post</code> και <code>get</code> διαφέρουν μεταξύ αυτών των 3; είναι η ίδια ιδέα, η ίδια λειτουργικότητα, απλώς χρησιμοποιείται διαφορετικά;</p>
ποια είναι η διαφορά μεταξύ τουpost και του get;
<p>μια <code>post</code>, σε αντίθεση με μια <code>get</code>, τυπικά έχει σχετικές πληροφορίες στο σώμα του αιτήματος. (το a <code>get</code> δεν θα πρέπει να έχει σώμα, εκτός από τα cookies, το μόνο μέρος για να περάσει πληροφορίες είναι στη διεύθυνση url.) εκτός από τη διατήρηση της σχετικής διεύθυνσης url καθαρότερα, το <code>post</code> σάς επιτρέπει επίσης να στείλετε περισσότερες πληροφορίες (όπως οι url είναι περιορισμένες σε μήκος, (για παράδειγμα, δεν μπορείτε να χρησιμοποιήσετε <code>get</code> - πρέπει να χρησιμοποιήσετε το <code>post</code> συν ένα ειδικό τύπο/κωδικοποίηση περιεχομένου).</p><p>εκτός από αυτό, ένα <code>post</code> δηλώνει ότι το αίτημα θα αλλάξει κάτι, και δεν θα πρέπει να επαναληφθεί willy-nilly. γι 'αυτό μερικές φορές βλέπετε το πρόγραμμα περιήγησής σας να σας ρωτάει εάν θέλετε να υποβάλετε ξανά τα δεδομένα φόρμας όταν πατήσετε το κουμπί "πίσω".</p><p><code>get</code>, από την άλλη πλευρά, πρέπει να είναι <em>idempotent</em> - που σημαίνει ότι θα μπορούσατε να το κάνετε ένα εκατομμύριο φορές και ο διακομιστής θα κάνει το ίδιο πράγμα (και θα δείξει ουσιαστικά το ίδιο αποτέλεσμα) κάθε φορά.</p>
<p>αν και δεν είναι περιγραφή των διαφορών, παρακάτω είναι μερικά πράγματα που πρέπει να σκεφτούμε όταν επιλέγουμε τη σωστή μέθοδο.</p><ul> <li>οι αιτήσεις get μπορούν να αποθηκευτούν προσωρινά από το πρόγραμμα περιήγησης, κάτι που μπορεί να είναι πρόβλημα (ή όφελος) όταν χρησιμοποιείτε ajax.</li> <li>οι αιτήσεις get εκθέτουν παραμέτρους στους χρήστες (το post κάνει επίσης αλλά είναι λιγότερο ορατό).</li> <li>το post μπορεί να περάσει πολύ περισσότερες πληροφορίες στο διακομιστή και μπορεί να έχει σχεδόν οποιοδήποτε μήκος.</li> </ul>
<p>τα post και get είναι δύο <a href="http://en.wikipedia.org/wiki/hypertext\_transfer\_protocol#request\_methods">μέθοδοι αίτησης http</a> . το get συνήθως αποσκοπεί στην ανάκτηση ορισμένων δεδομένων και αναμένεται να είναι idempotent (η επανάληψη του ερωτήματος δεν έχει παρενέργειες) και μπορεί να αποστείλει περιορισμένες ποσότητες δεδομένων παραμέτρων στο διακομιστή. τα αιτήματα get συχνά αποθηκεύονται προσωρινά από ορισμένα προγράμματα περιήγησης αν δεν είστε προσεκτικοί.</p><p>το post προορίζεται για την αλλαγή της κατάστασης του διακομιστή. μεταφέρει περισσότερα δεδομένα και η επανάληψη του ερωτήματος επιτρέπεται (και συχνά αναμένεται) να έχει παρενέργειες, όπως τη δημιουργία δύο μηνυμάτων αντί για ένα.</p>
<p>εάν εργάζεστε <a href="http://en.wikipedia.org/wiki/representational\_state\_transfer">restfully</a> , το get θα πρέπει να χρησιμοποιείται για αιτήματα όπου παίρνετε μόνο δεδομένα, και post θα πρέπει να χρησιμοποιείται για αιτήσεις όπου κάνετε κάτι να συμβεί.</p><p>μερικά παραδείγματα:</p><ul> <li> <p>πραγματοποιησετε τη σελίδα που παρουσιάζει μια συγκεκριμένη ερώτηση so</p> </li> <li> <p>post ένα σχόλιο</p> </li> <li> <p>στείλτε ένα αίτημα post κάνοντας κλικ στο κουμπί "προσθήκη στο καλάθι".</p> </li> </ul>
<p>με το post μπορείτε επίσης να κάνετε πολλαπλή κωδικοποίηση μιμού που σημαίνει ότι μπορείτε να επισυνάψετε αρχεία επίσης. επίσης, εάν χρησιμοποιείτε μεταβλητές μετά την πλοήγηση σε σελίδες, ο χρήστης θα πάρει μια προειδοποίηση που θα ρωτά εάν θέλει να ξαναδώσει την παραμετρική παράμετρο. συνήθως φαίνονται το ίδιο σε ένα αίτημα http, αλλά θα πρέπει απλώς να παραμείνετε στο post αν χρειαστεί να "post" κάτι σε ένα διακομιστή και "get" αν χρειαστεί να πάρετε κάτι από ένα διακομιστή, όπως αυτός είναι ο τρόπος προορίζονταν.</p>
<p>η μόνη "μεγάλη" διαφορά ανάμεσα στο post &amp; get (όταν τα χρησιμοποιείτε με ajax) είναι δεδομένου ότι η διεύθυνση url get παρέχεται, είναι περιορισμένη σε μήκος (δεδομένου ότι η διεύθυνση url δεν είναι άπειρη σε μήκος).</p>