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

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

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

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

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

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

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

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

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

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

instagram viewer

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

חֲבִילָה רָאשִׁי

יְבוּא (
"fmt"
"נטו/http"
)

// מטפל הוא מטפל טיפוסי בקשות-תגובה 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/ בדפדפן אינטרנט, אתה אמור לראות את ההודעה "שלום, עולם!" מחרוזת המוצגת בדפדפן שלך.

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

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

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

http. HandleFunc("/משתמשים", func(w http. ResponseWriter, r *http. בַּקָשָׁה) {
החלף ר. שיטה {
מקרה"לקבל":
// לטפל בבקשת GET
מקרה"הודעה":
// לטפל בבקשת POST
בְּרִירַת מֶחדָל:
http. שגיאה (w, "שיטת בקשה לא חוקית", http. StatusMethodNotAllowed)
}
})

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

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

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

אם השיטה היא משהו אחר, היא תשלח http. שְׁגִיאָה עם הודעת "שיטת בקשה לא חוקית" וא StatusMethodNotAllowedקוד מצב HTTP ללקוח.

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

w. לִכתוֹב([]בייט("שלום עולם!"))

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

w. WriteHeader (http. סטטוס אישור)

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

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

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

funcרישום תוכנת אמצעית(הבא http. מטפל)http.מטפל {
לַחֲזוֹר http. HandlerFunc(func(w http. ResponseWriter, r *http. בַּקָשָׁה) {
// רישום את הבקשה
הַבָּא. ServeHTTP(w, r)
// רשום את התגובה
})
}

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

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

http. ידית("/", loggingMiddleware (http. HandlerFunc (מטפל)))

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

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

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

http. הפניה מחדש (w, r, " http://example.com", http. StatusMovedPermanently)

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

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

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

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