Αναγνώστες σαν εσάς βοηθούν στην υποστήριξη του MUO. Όταν κάνετε μια αγορά χρησιμοποιώντας συνδέσμους στον ιστότοπό μας, ενδέχεται να κερδίσουμε μια προμήθεια θυγατρικών. Διαβάστε περισσότερα.

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

Όπως οι περισσότερες γλώσσες προγραμματισμού από την πλευρά του διακομιστή, η Go συνοδεύεται από ένα πακέτο HTTP για αλληλεπίδραση με το πρωτόκολλο HTTP. Το σχετικό πακέτο Go είναι το http πακέτο, ένα υπο-πακέτο του καθαρά πακέτο.

Τι είναι το πακέτο net/http;

ο net/http Το πακέτο είναι μία από τις τυπικές βιβλιοθήκες στο Go. Παρέχει ένα πλήρες σύνολο λειτουργιών και τύπων για τη δημιουργία πελατών HTTP, διακομιστών και άλλων λειτουργιών που βασίζονται σε HTTP. Αυτά περιλαμβάνουν:

  • Λειτουργίες για την υποβολή αιτημάτων HTTP.
  • Χειρισμός αιτημάτων και απαντήσεων.
  • Εξυπηρέτηση αιτημάτων HTTP.
  • Σχετικά αντικείμενα όπως κεφαλίδες και cookies.

ο net/http Το πακέτο υποστηρίζει επίσης κρυπτογράφηση TLS/SSL, HTTP/2 και άλλες προηγμένες λειτουργίες που καθιστούν το πακέτο απαραίτητο εργαλείο για τους προγραμματιστές Go.

instagram viewer

Πολλές δημοφιλείς βιβλιοθήκες και πλαίσια Go, από την εργαλειοθήκη ιστού Gorilla έως το πλαίσιο ιστού Echo, βασίζονται σε net/http πακέτο.

Εκκίνηση ενός απλού διακομιστή HTTP

Η εκκίνηση διακομιστών είναι μία από τις βασικές λειτουργίες που πρέπει να κατανοήσετε για να εργαστείτε με το πρωτόκολλο HTTP.

Εδώ είναι ένα πρόγραμμα για να τρέξτε έναν απλό διακομιστή στο Go:

πακέτο κύριος

εισαγωγή (
"fmt"
"net/http"
)

Ο // handler είναι ένας τυπικός χειριστής αιτήματος-απόκρισης HTTP στο Go. λεπτομέρειες αργότερα
funcχειριστής(w http. ResponseWriter, r *http. Αίτηση) {
// Το Fprintf μορφοποιεί τη συμβολοσειρά σε πρόγραμμα εγγραφής
fmt. Fprintf (w, "Γειά σου Κόσμε!")
}

funcκύριος() {
http. HandleFunc("/", χειριστής)
http. ListenAndServe(":8080", μηδέν)
}

ο χειριστής Η συνάρτηση είναι ένας τυπικός χειριστής αιτημάτων-απόκρισης για το http πακέτο. Αυτή η συνάρτηση γράφει τη συμβολοσειρά "Hello, World!" στον συντάκτη απαντήσεων HTTP.

Κατά την εκτέλεση του κώδικα και την επίσκεψη http://localhost: 8080/ σε ένα πρόγραμμα περιήγησης ιστού, θα πρέπει να δείτε το "Hello, World!" συμβολοσειρά που εμφανίζεται στο πρόγραμμα περιήγησής σας.

Χειρισμός αιτημάτων και απαντήσεων

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

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

http. HandleFunc("/χρήστες", func(w http. ResponseWriter, r *http. Αίτηση) {
διακόπτης r. Μέθοδος {
υπόθεση"ΠΑΙΡΝΩ":
// χειρισμός αιτήματος GET
υπόθεση"ΘΕΣΗ":
// χειρισμός αιτήματος POST
Προκαθορισμένο:
http. Σφάλμα (w, "Μη έγκυρη μέθοδος αιτήματος", http. StatusMethodNotAllowed)
}
})

Ο παραπάνω κώδικας χρησιμοποιεί το http πακέτο για να ορίσετε μια συνάρτηση χειριστή HTTP για το /users Διαδρομή. Η συνάρτηση χειριστή ακούει τα εισερχόμενα αιτήματα HTTP στη διαδρομή και τα επεξεργάζεται με βάση τη μέθοδο αιτήματος (π.χ. ΠΑΙΡΝΩ, ΘΕΣΗ, και τα λοιπά.)

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

Η παραπάνω λειτουργία χειριστή χρησιμοποιεί α διακόπτης δήλωση για να προσδιορίσετε τη μέθοδο αιτήματος και να εκτελέσετε διαφορετικά μπλοκ κώδικα με βάση τη μέθοδο. Εάν η μέθοδος είναι ΠΑΙΡΝΩ, ο χειριστής θα χειριστεί το ΠΑΙΡΝΩ αίτηση. Διαφορετικά, η μέθοδος είναι ΘΕΣΗ; θα χειριστεί το ΘΕΣΗ αίτηση.

Εάν η μέθοδος είναι οτιδήποτε άλλο, θα στείλει ένα http. Λάθος με μήνυμα "Μη έγκυρη μέθοδος αιτήματος" και α StatusMethodNotAllowedΚωδικός κατάστασης HTTP στον πελάτη.

Μπορείτε να γράψετε πίσω συμβολοσειρές στον πελάτη χρησιμοποιώντας το Γράφω μέθοδος του στιγμιότυπου του συγγραφέα που παίρνει σε ένα byte κομμάτι συμβολοσειρών και γράφει τη συμβολοσειρά.

w. Γράφω([]ψηφιόλεξη("Γειά σου Κόσμε!"))

Μπορείτε να χρησιμοποιήσετε το WriteHeader μέθοδος σου ResponseWriter παράδειγμα για να γράψετε κεφαλίδες στον πελάτη.

w. WriteHeader (http. Κατάσταση ΟΚ)

Εργασία με HTTP Middleware

Το Middleware αποτελείται από συναρτήσεις που παρεμποδίζουν τα εισερχόμενα αιτήματα HTTP για λειτουργίες πριν το αίτημα προχωρήσει στην επόμενη λειτουργία χειριστή.

Ακολουθεί ένα παράδειγμα καταγραφής της συνάρτησης χειριστή ενδιάμεσου λογισμικού στο Go:

funcloggingMiddleware(επόμενο http. Χειριστής)http.Χειριστής {
ΕΠΙΣΤΡΟΦΗ http. HandlerFunc(func(w http. ResponseWriter, r *http. Αίτηση) {
// καταγραφή του αιτήματος
Επόμενο. ServeHTTP(w, r)
// καταγραφή της απάντησης
})
}

ο loggingMiddleware Η συνάρτηση δέχεται έναν χειριστή HTTP και επιστρέφει έναν νέο χειριστή HTTP. Ο επιστρεφόμενος χειριστής HTTP είναι μια ανώνυμη συνάρτηση που δέχεται ένα πρόγραμμα εγγραφής απαντήσεων HTTP και ένα αίτημα HTTP. Η συνάρτηση καταγράφει το αίτημα και καλεί το Εξυπηρέτηση HTTP μέθοδος στο Επόμενο Χειριστής HTTP, μεταβίβαση στο πρόγραμμα εγγραφής απάντησης και αίτημα ως ορίσματα.

Μπορείτε να χειριστείτε λειτουργίες ενδιάμεσου λογισμικού με το Λαβή μέθοδος του http πακέτο. ο Λαβή μέθοδος παίρνει τη διαδρομή και τη λειτουργία του ενδιάμεσου λογισμικού.

http. Λαβή("/", loggingMiddleware (http. HandlerFunc (χειριστής)))

Ανακατευθύνσεις με το πακέτο HTTP

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

Μπορείτε να ανακατευθύνετε σε άλλη ιστοσελίδα χρησιμοποιώντας το Διευθύνω πάλιν μέθοδος του http πακέτο.

http. Ανακατεύθυνση (w, r, " http://example.com", http. Κατάσταση Μετακινήθηκε Μόνιμα)

ο Διευθύνω πάλιν μέθοδος παίρνει στο ResponseWriter και Αίτηση στιγμιότυπα, τη διεύθυνση URL της νέας σελίδας και έναν κωδικό κατάστασης για την ανακατεύθυνση.

Μπορείτε να δημιουργήσετε σύνθετα API στο Go

ο http Το πακέτο είναι ένα ισχυρό και ευέλικτο εργαλείο για τη δημιουργία πολύπλοκων API. Μπορείτε να χρησιμοποιήσετε την πλούσια τυπική βιβλιοθήκη της Go και άλλες ισχυρές πακέτα τρίτων για να προσθέσετε λειτουργικότητα στα API σας, όπως συνδεσιμότητα βάσεων δεδομένων και υποστήριξη για διαφορετικούς ιστούς πλαίσια.

Με το Go, μπορείτε να δημιουργήσετε κλιμακούμενα, υψηλής απόδοσης API που χειρίζονται με ευκολία σημαντική επισκεψιμότητα αιτημάτων και περίπλοκες εργασίες επεξεργασίας δεδομένων.