POST
Μέθοδος HTTP
Προδιαγραφή της μεθόδου HTTP POST
Η μέθοδος POST ζητά από τον πόρο-στόχο να επεξεργαστεί την αναπαράσταση που περικλείεται στο αίτημα σύμφωνα με τη δική του ειδική σημασιολογία. Για παράδειγμα, η POST χρησιμοποιείται για τις ακόλουθες λειτουργίες (μεταξύ άλλων):
- Παροχή ενός μπλοκ δεδομένων, όπως τα πεδία που εισάγονται σε μια φόρμα HTML, σε μια διαδικασία επεξεργασίας δεδομένων;
- Αποστολή ενός μηνύματος σε έναν πίνακα ανακοινώσεων, μια ομάδα ειδήσεων, μια λίστα αλληλογραφίας, ένα ιστολόγιο ή μια παρόμοια ομάδα άρθρων;
- Δημιουργία ενός νέου πόρου που δεν έχει ακόμη αναγνωριστεί από τον διακομιστή προέλευσης- και
- Προσθήκη δεδομένων στην/στις υπάρχουσα/ες αναπαράσταση/ες ενός πόρου.
Ένας διακομιστής προέλευσης υποδεικνύει τη σημασιολογία της απόκρισης επιλέγοντας έναν κατάλληλο κωδικό κατάστασης ανάλογα με το αποτέλεσμα της επεξεργασίας του αιτήματος POST- σχεδόν όλοι οι κωδικοί κατάστασης που ορίζονται από την παρούσα προδιαγραφή ενδέχεται να ληφθούν σε μια απάντηση σε POST (οι εξαιρέσεις είναι οι 206 (Μερικό περιεχόμενο), 304 (Δεν τροποποιήθηκε) και 416 (Εύρος μη ικανοποιήσιμο)).
Εάν ένας ή περισσότεροι πόροι έχουν δημιουργηθεί στον αρχικό διακομιστή ως αποτέλεσμα της επιτυχούς επεξεργασίας μιας αίτησης POST, ο αρχικός διακομιστής ΘΑ ΠΡΕΠΕΙ να στείλει μια απάντηση 201 (Created) που περιέχει ένα πεδίο κεφαλίδας Location που παρέχει ένα αναγνωριστικό για τον πρωτογενή πόρο που δημιουργήθηκε (Ενότητα 7.1.2) και μια αναπαράσταση που περιγράφει την κατάσταση του αιτήματος, ενώ παράλληλα αναφέρεται στον/στους νέο/ους πόρο/ους.
Οι απαντήσεις σε αιτήματα POST μπορούν να αποθηκευτούν στην κρυφή μνήμη μόνο όταν περιλαμβάνουν ρητές πληροφορίες για τη φρεσκάδα (βλ. ενότητα 4.2.1 του [RFC7234]). Ωστόσο, η προσωρινή αποθήκευση POST δεν εφαρμόζεται ευρέως. Για τις περιπτώσεις όπου ένας διακομιστής προέλευσης επιθυμεί ο πελάτης να μπορεί να αποθηκεύσει το αποτέλεσμα ενός POST στην προσωρινή μνήμη με τρόπο που να μπορεί να επαναχρησιμοποιηθεί από ένα μεταγενέστερο GET, ο διακομιστής προέλευσης ΜΠΟΡΕΙ να στείλει μια απάντηση 200 (OK) που περιέχει το αποτέλεσμα και ένα πεδίο κεφαλίδας Content-Location που έχει την ίδια τιμή με το πραγματικό URI του αιτήματος POST (Ενότητα 3.1.4.2).
Εάν το αποτέλεσμα της επεξεργασίας ενός POST θα ήταν ισοδύναμο με την αναπαράσταση ενός υπάρχοντος πόρου, ένας διακομιστής προέλευσης ΜΠΟΡΕΙ να ανακατευθύνει τον πράκτορα χρήστη σε αυτόν τον πόρο στέλνοντας μια απάντηση 303 (Βλέπε άλλο) με το αναγνωριστικό του υπάρχοντος πόρου στο πεδίο Τοποθεσία. Αυτό έχει τα πλεονεκτήματα της παροχής στον πράκτορα χρήστη ενός αναγνωριστικού πόρου και της μεταφοράς της αναπαράστασης μέσω μιας μεθόδου που είναι πιο πρόσφορη για κοινή προσωρινή αποθήκευση, αν και με το κόστος μιας επιπλέον αίτησης εάν ο πράκτορας χρήστης δεν έχει ήδη αποθηκεύσει την αναπαράσταση στην προσωρινή μνήμη.
Περιγραφή της μεθόδου POST
Παράδειγμα για τη μέθοδο HTTP POST
POST /data HTTP/1.1
Host: api.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537
Accept: application/json
Accept-Language: de-DE,de;q=0.5
Content-Type: application/json
Content-Length: 100
Connection: keep-alive
Request body:
{
"key": "value",
"foo": "bar"
}
Content-Type: application/json
Date: Mon, 31 July 2023 14:58:12 GMT
Server: Apache/2.4.7 (Ubuntu)
Cache-Control: no-cache
Location: http://api.example.com/data/123
Response body:
{
"status": "success",
"id": 123
}