מבוא לחבילת HTTP של Go

מבוא לחבילת HTTP של Go
קוראים כמוך עוזרים לתמוך ב-MUO. כאשר אתה מבצע רכישה באמצעות קישורים באתר שלנו, אנו עשויים להרוויח עמלת שותף. קרא עוד.

Go היא שפה חזקה וגמישה לבניית יישומי אינטרנט. ה נֶטוֹ החבילה ממלאת תפקיד חיוני במערכת האקולוגית של Go.





כמו רוב שפות התכנות בצד השרת, Go נשלחת עם חבילת HTTP לאינטראקציה עם פרוטוקול HTTP. חבילת ה-Go הרלוונטית היא http חבילה, חבילת משנה של נֶטוֹ חֲבִילָה.





מהי חבילת net/http?

  סקירת חבילת http

ה net/http package היא אחת מהספריות הסטנדרטיות ב-Go. הוא מספק סט מלא של פונקציות וסוגים לבניית לקוחות HTTP, שרתים ופעולות אחרות מבוססות HTTP. אלו כוללים:





  • פונקציות לביצוע בקשות HTTP.
  • טיפול בבקשות ותשובות.
  • הגשת בקשות HTTP.
  • אובייקטים קשורים כגון כותרות וקובצי Cookie.

ה net/http החבילה תומכת גם בהצפנת TLS/SSL, HTTP/2 ותכונות מתקדמות אחרות שהופכות את החבילה לכלי חיוני עבור מפתחי Go.

כיצד לצלם צילום מסך ב- Surface Pro

ספריות ומסגרות פופולריות רבות של Go, החל מערך הכלים האינטרנט של Gorilla ועד למסגרת האינטרנט של Echo, בנוי על גבי net/http חֲבִילָה.



הפעלת שרת HTTP פשוט

הפעלת שרתים היא אחת הפעולות הבסיסיות שאתה צריך להבין כדי לעבוד עם פרוטוקול HTTP.

הנה תוכנית ל להפעיל שרת פשוט ב-Go :





 package main 

import (
    "fmt"
    "net/http"
)

// handler is a typical HTTP request-response handler in Go; details later
func handler(w http.ResponseWriter, r *http.Request) {
    // Fprintf formats the string to a writer
    fmt.Fprintf(w, "Hello, World!")
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}

ה מטפל הפונקציה היא מטפל טיפוסי של בקשה-תגובה עבור http חֲבִילָה. פונקציה זו כותבת את המחרוזת 'Hello, World!' לכותב תגובת ה-HTTP.

על הפעלת הקוד וביקור http://localhost:8080/ בדפדפן אינטרנט, אתה אמור לראות את ההודעה 'שלום, עולם!' מחרוזת המוצגת בדפדפן שלך.





  תוצאה של הפעלת שרת

טיפול בבקשות ותגובות

אתה יכול לטפל בבקשות נכנסות עם HandleFunc שיטת ה http חֲבִילָה. ה HandleFunc השיטה לוקחת מחרוזת מסלול ופונקציית מטפל.

ה http.בקשה השיטה היא מופע של הבקשה הנכנסת, ואתה יכול להשתמש בשיטות הרבות של המופע שלך כדי ליצור אינטראקציה עם הבקשות למסלול.

 http.HandleFunc("/users", func(w http.ResponseWriter, r *http.Request) { 
    switch r.Method {
    case "GET":
        // handle GET request
    case "POST":
        // handle POST request
    default:
        http.Error(w, "Invalid request method", http.StatusMethodNotAllowed)
    }
})

הקוד למעלה משתמש ב- http חבילה כדי להגדיר פונקציית מטפל HTTP עבור /משתמשים מַסלוּל. פונקציית המטפל מאזינה לבקשות HTTP נכנסות במסלול ומעבדת אותן על סמך שיטת הבקשה (למשל, לקבל , הודעה , וכו.)

פונקציית המטפל לוקחת את כותב תגובה ו בַּקָשָׁה שיטות כטיעונים. ה כותב תגובה הוא ממשק שעוזר למטפל לכתוב נתונים כתגובה ללקוח, ואת בַּקָשָׁה הוא מבנה שמכיל מידע על הבקשה הנכנסת, כגון שיטת HTTP, כתובת URL, כותרות וכו'.

פונקציית המטפל לעיל משתמשת ב-a החלף הצהרה כדי לקבוע את שיטת הבקשה ולהפעיל בלוקי קוד שונים על סמך השיטה. אם השיטה היא לקבל , המטפל יטפל ב לקבל בַּקָשָׁה. אחרת, השיטה היא הודעה; זה יטפל ב הודעה בַּקָשָׁה.

אם השיטה היא משהו אחר, היא תשלח http.שגיאה עם הודעת 'שיטת בקשה לא חוקית' וא StatusMethodNotAllowed קוד מצב HTTP ללקוח.

אתה יכול לכתוב מחרוזות חזרה ללקוח באמצעות ה לִכתוֹב שיטה של ​​מופע הסופר שלך שמקבלת פרוסת בתים של מחרוזות וכותבת את המחרוזת.

 w.Write([]byte("Hello, World!")) 

אתה יכול להשתמש ב WriteHeader השיטה שלך כותב תגובה מופע לכתוב כותרות ללקוח.

 w.WriteHeader(http.StatusOK) 

עבודה עם תוכנת HTTP

תוכנת ביניים מורכבת מפונקציות שיירטות בקשות HTTP נכנסות לפעולות לפני שהבקשה ממשיכה לפונקציית המטפל הבאה.

הנה דוגמה לרישום פונקציית המטפל בתווך ב-Go:

 func loggingMiddleware(next http.Handler) http.Handler { 
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        // log the request
        next.ServeHTTP(w, r)
        // log the response
    })
}

ה רישום תוכנת אמצעית הפונקציה לוקחת מטפל HTTP ומחזירה מטפל HTTP חדש. מטפל ה-HTTP המוחזר הוא פונקציה אנונימית שמקבלת כותב תגובת HTTP ובקשת HTTP. הפונקציה רומנת את הבקשה וקוראת ל- שרת HTTP שיטה על הַבָּא מטפל ב-HTTP, מעביר את כותב התגובה והבקשה כטיעונים.

אתה יכול לטפל בפונקציות של תוכנת האמצע עם ה ידית שיטת ה http חֲבִילָה. ה ידית השיטה לוקחת את המסלול ואת פונקציית התווך.

 http.Handle("/", loggingMiddleware(http.HandlerFunc(handler))) 

הפניות מחדש עם חבילת HTTP

הפנייה מחדש היא פעולה פופולרית עבור יישומי אינטרנט המפנים משתמשים למשאבים אחרים או לדפי אינטרנט אחרים.

אתה יכול להפנות מחדש לדף אינטרנט אחר באמצעות ה הפניה מחדש שיטת ה http חֲבִילָה.

 http.Redirect(w, r, "http://example.com", http.StatusMovedPermanently) 

ה הפניה מחדש השיטה לוקחת את כותב תגובה ו בַּקָשָׁה מופעים, כתובת האתר החדשה של הדף וקוד סטטוס להפניה מחדש.

אתה יכול לבנות ממשקי API מורכבים ב-Go

ה http חבילה היא כלי רב עוצמה וגמיש לבניית ממשקי API מורכבים. אתה יכול להשתמש בספריית הסטנדרט העשירה של Go ובחבילות חזקות אחרות של צד שלישי כדי להוסיף פונקציונליות לממשקי ה-API שלך, כגון קישוריות מסד נתונים ותמיכה במסגרות אינטרנט שונות.

עם Go, אתה יכול לבנות ממשקי API בעלי ביצועים גבוהים, המטפלים בתעבורת בקשות משמעותית ומשימות עיבוד נתונים מורכבות בקלות.