Μπορεί να έχετε ακούσει για τα αιτήματα GET και POST, αλλά είναι μόνο η αρχή.

Κάθε αίτημα HTTP χρησιμοποιεί μια μέθοδο για να περιγράψει τον βασικό σκοπό του. Κάθε μέθοδος έχει συγκεκριμένες χρήσεις για εργασίες που κυμαίνονται από την ανάκτηση μιας ιστοσελίδας έως τη διαγραφή ενός πόρου. Το GET και το POST είναι τα δύο πιο γνωστά, αλλά υπάρχουν και άλλα επτά.

Μάθετε σχετικά με αυτήν την έννοια και σε τι χρησιμεύει καθεμία από τις εννέα πιθανές μεθόδους HTTP.

Τι είναι μια μέθοδος HTTP;

Κάθε αίτημα HTTP που κάνετε περιλαμβάνει μια ενέργεια και έναν στόχο για αυτήν την ενέργεια, όπως ένα ρήμα και ένα ουσιαστικό που λειτουργεί ως αντικείμενο.

Η διεύθυνση URL προσδιορίζει έναν μοναδικό πόρο, ο οποίος λειτουργεί ως στόχος του αιτήματος. Εν τω μεταξύ, το ρήμα - ποια ενέργεια να πραγματοποιηθεί σε αυτήν τη διεύθυνση URL - αντιπροσωπεύεται από μια μέθοδο.

Η πρώτη γραμμή ενός αιτήματος HTTP παρέχει τις πιο σημαντικές πληροφορίες, συμπεριλαμβανομένων της έκδοσης HTTP, της διεύθυνσης URL του πόρου και της μεθόδου αιτήματος:

instagram viewer
GET /software/htp/cics/index.html HTTP/1.1

Ποιες είναι οι 9 μέθοδοι HTTP;

Οι τέσσερις πρώτες μέθοδοι είναι ισοδύναμες των τεσσάρων ενεργειών από το μοντέλο CRUD: Δημιουργία, Ανάγνωση, Ενημέρωση και Διαγραφή. Οι αντίστοιχες μέθοδοι HTTP είναι ΘΕΣΗ, ΠΑΙΡΝΩ, ΒΑΖΩ, και ΔΙΑΓΡΑΦΩ.

ΠΑΙΡΝΩ

Το πιο συνηθισμένο, προεπιλεγμένο αίτημα που θα στείλετε όταν περιηγείστε στον ιστό και κάνετε κλικ σε συνδέσμους ή ζητάτε δεδομένα μέσω ενός API. Ο διακομιστής θα πρέπει να επιστρέψει τον πόρο στο σώμα απόκρισής του.

ΘΕΣΗ

Χρησιμοποιήστε το POST για να δημιουργήσετε νέους πόρους, ιδιαίτερα όταν αυτοί οι πόροι έχουν έναν αναγνωρίσιμο γονικό πόρο. Για παράδειγμα, εάν έχετε έναν πόρο /clients, θα πρέπει να δημιουργήσετε έναν νέο πελάτη δημοσιεύοντας τα απαιτούμενα δεδομένα σε /clients.

ΒΑΖΩ

Ενημερώστε ή αντικαταστήστε έναν υπάρχοντα πόρο. Αυτό είναι παρόμοιο με το POST, αλλά ο πελάτης είναι υπεύθυνος για την επιλογή ενός μοναδικού αναγνωριστικού για τον πόρο. Για να δημιουργήσετε έναν πόρο χρησιμοποιώντας το PUT, η διεύθυνση URL του πόρου θα πρέπει να περιλαμβάνει ένα αναγνωριστικό, για παράδειγμα, /clients/007.

ΔΙΑΓΡΑΦΩ

Χρησιμοποιήστε αυτήν τη μέθοδο για να διαγράψετε τον πόρο που καθορίζετε στη διεύθυνση URL. Όπως όλες οι μέθοδοι HTTP, η υποστήριξη παρέχεται στον διακομιστή. Μπορεί να επιτρέψει σε οποιονδήποτε να διαγράψει έναν πόρο, αν και αυτό θα ήταν σαφώς επικίνδυνο. Συνήθως απαιτείται διακομιστής που υποστηρίζει DELETE έλεγχο ταυτότητας και εξουσιοδότηση.

Δύο άλλες μέθοδοι παρέχουν μικρές παραλλαγές στα παραπάνω: ΚΗΛΙΔΑ και ΚΕΦΑΛΙ. Μπορεί να σας φανούν χρήσιμα όταν χρησιμοποιείτε συγκεκριμένα API ή αν δημιουργείτε το δικό σας.

ΚΗΛΙΔΑ

Η μέθοδος PATCH ενημερώνει έναν υπάρχοντα πόρο, με μόνο μερικά δεδομένα. Με άλλα λόγια, δεν χρειάζεται να παρέχετε την πλήρη αναπαράσταση του νέου πόρου, μόνο τα πεδία που πρέπει να ενημερώσετε.

ΚΕΦΑΛΙ

Ένα αίτημα HEAD αφορά όταν θέλετε πληροφορίες σχετικά με έναν πόρο, αλλά όχι τον ίδιο τον πόρο. Η απάντηση δεν θα περιλαμβάνει σώμα, αλλά θα περιέχει ένα σύνολο χρήσιμων κεφαλίδων HTTP. Μπορείτε να μάθετε το συνολικό μέγεθος ενός αρχείου πριν το κατεβάσετε, μέσω της κεφαλίδας απόκρισης Content-Length.

Οι υπόλοιπες μέθοδοι -ΕΠΙΛΟΓΕΣ, ΣΥΝΔΕΩ-ΣΥΩΔΕΟΜΑΙ, και ΙΧΝΟΣ— είναι πιο σκοτεινές. Ασχολούνται με τα μεταδεδομένα, τη δικτύωση και την αντιμετώπιση προβλημάτων. Μπορεί να τα βρείτε χρήσιμα σε συγκεκριμένους τύπους προγραμματισμού, αλλά πιθανότατα δεν θα τα χρησιμοποιείτε καθημερινά.

ΕΠΙΛΟΓΕΣ

Ένας διακομιστής θα πρέπει να ανταποκρίνεται σε αυτήν τη μέθοδο λέγοντάς σας ποιες μεθόδους HTTP υποστηρίζει πραγματικά ο πόρος. Αυτό μπορεί να είναι χρήσιμο για ανακάλυψη.

ΣΥΝΔΕΩ-ΣΥΩΔΕΟΜΑΙ

Ορισμένοι τύποι λογισμικού δικτύωσης ενδέχεται να χρησιμοποιούν αυτήν τη μέθοδο για να δημιουργήσουν μια σήραγγα μεταξύ δύο υπολογιστών. Αυτό χρησιμοποιείται συχνά για την εκκίνηση μιας σύνδεσης HTTPS μέσω διακομιστή μεσολάβησης.

ΙΧΝΟΣ

Αυτή η μέθοδος είναι χρήσιμη για την αντιμετώπιση προβλημάτων. Κατά τη λήψη του, ο διακομιστής θα πρέπει να στείλει πίσω το αίτημα που έλαβε στο σώμα απάντησης. Η μέθοδος παρέχει έναν μηχανισμό για τον έλεγχο του εάν οι ενδιάμεσες μηχανές έχουν αλλάξει οποιεσδήποτε λεπτομέρειες του αιτήματος.

Το GET και το HEAD είναι οι μόνες δύο μέθοδοι που υποστηρίζει κάθε γενικός διακομιστής web. Ένας συγκεκριμένος διακομιστής μπορεί να υποστηρίζει ή να μην υποστηρίζει άλλες μεθόδους, επομένως θα πρέπει να ελέγξετε πρώτα.

Πότε μπορείτε να χρησιμοποιήσετε αυτές τις μεθόδους;

Τις περισσότερες φορές, οι μέθοδοι HTTP θα είναι διαφανείς σε εσάς. Ωστόσο, θα πρέπει να τα λάβετε υπόψη εάν προσθέσετε μια φόρμα σε μια ιστοσελίδα ή χρησιμοποιήσετε ένα API.

Μέθοδοι HTTP σε HTML

ο μορφή στοιχεία μέθοδος Το χαρακτηριστικό σάς επιτρέπει να ορίσετε τη μέθοδο HTTP για χρήση κατά την υποβολή της φόρμας. Η HTML υποστηρίζει μόνο το Θέση και παίρνω τιμές για αυτό το χαρακτηριστικό—συν μια ασαφή εναλλακτική λύση διαλόγου.

<μορφήμέθοδος="Θέση">
...
μορφή>

Μπορείτε να χρησιμοποιήσετε λειτουργίες όπως Εργαλεία προγραμματιστών του Chrome για προβολή Δίκτυο κυκλοφορίας και επιβεβαιώστε τη μέθοδο που στέλνει το πρόγραμμα περιήγησής σας για ένα συγκεκριμένο αίτημα. Λάβετε υπόψη ότι οι περισσότερες φόρμες ιστού θα στείλουν ένα POST, καθώς συνήθως ενημερώνουν δεδομένα στον διακομιστή. Πολλές φόρμες αναζήτησης, ωστόσο, χρησιμοποιούν το GET αφού απλώς ανακτούν δεδομένα χωρίς να τα αλλάζουν.

Επειδή τα δεδομένα POST δεν αποτελούν μέρος της διεύθυνσης URL, είναι πιο ιδιωτικά από ό, τι αν τα στείλετε μέσω GET. Τα δεδομένα εξακολουθούν να υπάρχουν στο σώμα του αιτήματος όπου, θεωρητικά, ένας εισβολέας μπορεί να το υποκλέψει. Αλλά η αποστολή δεδομένων μέσω HTTPS θα πρέπει να μετριάσει αυτό το πρόβλημα.

Δεν πρέπει ποτέ να εφαρμόσετε μια σύνδεση χρήστη με αιτήματα GET. Παρόλο που η σύνδεση μπορεί να μοιάζει περισσότερο με λειτουργία ανάγνωσης παρά με δημιουργία ή ενημέρωση, θα πρέπει να χρησιμοποιήσετε το POST για να ασφαλίσετε τα δεδομένα.

Δεδομένου ότι οι φόρμες HTML υποστηρίζουν μόνο GET και POST, δεν μπορείτε να δημιουργήσετε απευθείας μια φόρμα που, για παράδειγμα, διαγράφει έναν πόρο στον διακομιστή. Μια κοινή λύση, η οποία σέβεται τις αρχές REST στον διακομιστή, είναι να χρησιμοποιήσετε μια μεταβλητή κράτησης θέσης και να προσποιηθείτε ότι ήταν η αρχική μέθοδος HTTP. Για παράδειγμα:

<μορφήμέθοδος="Θέση">
<εισαγωγήτύπος="κρυμμένος"όνομα="_μέθοδος"αξία="ΔΙΑΓΡΑΦΩ" />
...
μορφή>

Ο κώδικας από την πλευρά του διακομιστή σας μπορεί να ελέγξει την παρουσία αυτής της μεταβλητής «μέθοδος μεσολάβησης» και να τη χειριστεί σαν να ήταν η πραγματική μέθοδος που χρησιμοποιήθηκε. Για παράδειγμα, στην PHP:

$method = $_SERVER["REQUEST_METHOD"];

αν (κλειδί_πίνακας_υπάρχει("_μέθοδος", $_REQUEST)) {
$method = $_REQUEST["_μέθοδος"];
}

Αποστολή αιτημάτων HTTP μέσω προγραμματισμού

Το Web Fetch API παρέχει μια συνάρτηση JavaScript fetch() που μπορείτε να χρησιμοποιήσετε για να στείλετε ένα αίτημα HTTP. Υποστηρίζει όλο το φάσμα των μεθόδων, όχι μόνο το GET και το POST που υποστηρίζει η HTML.

Η λειτουργία ανάκτησης θα στείλει ένα αίτημα GET από προεπιλογή. Για να χρησιμοποιήσετε μια διαφορετική μέθοδο, καθορίστε το όνομά της ως τιμή για το a μέθοδος ιδιοκτησία σε ένα αντικείμενο που στέλνετε ως δεύτερο όρισμα.

φέρω(' https://example.com/', { μέθοδος: "ΚΕΦΑΛΙ" });

Μπορείτε επίσης να στείλετε αιτήματα HTTP από πολλές γλώσσες του διακομιστή, συμπεριλαμβανομένης της PHP. Σε αυτή τη γλώσσα, η βιβλιοθήκη curl είναι ένας κοινός τρόπος αποστολής τέτοιων αιτημάτων.

Η βιβλιοθήκη curl έχει μια επιλογή CURLOPT_CUSTOMREQUEST που μπορείτε να ορίσετε για να καθορίσετε μια μέθοδο

αν ($ch = curl_init($url)) {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'ΒΑΖΩ');
curl_exec($ch);
// ...
}

Μέσω της γραμμής εντολών

Το εργαλείο γραμμής εντολών curl σας επιτρέπει να μεταφέρετε δεδομένα προς ή από έναν διακομιστή, μέσω ενός από τα πολλά πρωτόκολλα. Το HTTP (και το HTTPS) είναι δύο πολύ κοινές περιπτώσεις χρήσης.

Από προεπιλογή, το curl στέλνει ένα αίτημα GET, όπως μπορείτε να επιβεβαιώσετε με την ακόλουθη εντολή:

curl -v -s -o /dev/null example.com/get-test

Μπορείτε να δείτε τη μέθοδο αιτήματος στην πέμπτη γραμμή της εξόδου:

Μπορείτε να αλλάξετε τη μέθοδο αιτήματος που στέλνει το curl χρησιμοποιώντας τη σημαία -X:

curl -v -s -o /dev/null example.com/get-test -X POST

Τώρα, το curl στέλνει ένα αίτημα χρησιμοποιώντας τη μέθοδο POST:

Το HTTP έχει πολλές χρήσεις

Τα περισσότερα από αυτά που κάνετε στον Ιστό θα περιλαμβάνουν τυπικά αιτήματα GET, με περιστασιακά POST για υποβολές φορμών. Αλλά το HTTP είναι ένα πολύ πιο εκφραστικό πρωτόκολλο από αυτό που υποδηλώνει.

Μερικές από τις πιο κοινές μεθόδους αντικατοπτρίζουν το μοντέλο CRUD, το οποίο καθιστά το HTTP μια εξαιρετική βάση για τη δημιουργία ενός API εστιασμένου σε πόρους.