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

כתובות URL (Uniform Resource Locators) הן אחת מחלקי התשתית הקריטיים ביותר באינטרנט. בעת בניית יישומי אינטרנט, תצטרך לבצע מניפולציות על כתובות אתרים כדי לאתר ולאחזר משאבים.

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

הספרייה הסטנדרטית של Go מספקת את חבילת ה-net/url לטיפול בכתובות URL ורכיבי URL.

חבילת כתובת האתר

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

כמה מתכונות המפתח של כתובת אתר החבילה היא היכולת לנתח כתובות URL לרכיבים בודדים לצורך מניפולציה ובניית כתובת URL עבור בקשות HTTP. ה כתובת אתר החבילה מספקת גם א כתובת אתר מבנה עם א לְנַתֵחַ שיטה לניתוח מחרוזות לכתובות URL.

instagram viewer

הנה ה כתובת אתר. כתובת אתר מודל מבנה:

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

סוּג כתובת אתר מבנה {
// Scheme היא סכימת הפרוטוקול של כתובת האתר,
// כגון "http" או "https"
תָכְנִית חוּט

// אטום משמש כדי להחזיק נתונים אטומים
// שאמור להיות מקודד בכתובת האתר
אָטוּם חוּט

// המשתמש מחזיק במידע על המשתמש המגיש את הבקשה,
// כגון שם משתמש וסיסמה
משתמש *פרטי משתמש

// מארח הוא שם המארח או כתובת ה-IP
// של השרת המארח את כתובת האתר
מנחה חוּט

// נתיב הוא הנתיב של כתובת האתר בשרת
נָתִיב חוּט

// RawPath הוא המקור,
// נתיב מקודד של כתובת האתר
RawPath חוּט

// ForceQuery מציין אם כתובת האתר צריכה לכלול מחרוזת שאילתה
// גם אם הוא ריק
ForceQuery bool

// RawQuery הוא המקור,
//מחרוזת שאילתה מקודדת של כתובת האתר
RawQuery חוּט

// Fragment הוא מזהה הפרגמנט של כתובת האתר,
// משמש לקישור לרכיב מסוים בדף
רסיס חוּט

// RawFragment הוא המקור,
// מזהה קטע מקודד של כתובת האתר
RawFragment חוּט
}

לדעת איך לגשת לחלקים שונים של כתובת אתר struct יכול להיות שימושי עבור משימות כמו אימות.

ניתוח כתובות URL באמצעות פונקציית הניתוח

ה לְנַתֵחַ פונקציה של כתובת אתר החבילה מספקת את הפונקציונליות לניתוח מחרוזות כתובת URL לרכיבים בודדים. ה לְנַתֵחַ הפונקציה לוקחת כתובת URL בודדת כארגומנט ומחזירה מצביע ל- כתובת אתר. כתובת אתר struct המכיל את הנתונים המנתחים של כתובת האתר וסוג שגיאה.

הנה איך אתה יכול להשתמש ב- לְנַתֵחַ פונקציה כדי לאחזר את הרכיבים של כתובת URL.

יְבוּא (
"fmt"
"net/url"
)

funcרָאשִׁי() {
// כתובת האתר שברצונך לנתח
URL דוגמה := " https://www.example.com/path? param1=value1&param2=value2"

// נתח את כתובת האתר
parsedURL, err := url. ניתוח (כתובת אתר לדוגמה)

אם טעות != אֶפֶס {
fmt. Println (שגיאה)
לַחֲזוֹר
}

// הדפס את כל השדות של כתובת האתר
fmt. Println("תָכְנִית:", parsedURL.Scheme)
fmt. Println("אָטוּם:", מנותח URL.אטום)
fmt. Println("מִשׁתַמֵשׁ:", parsedURL.User)
fmt. Println("מנחה:", parsedURL.Host)
fmt. Println("נָתִיב:", parsedURL.Path)
fmt. Println("RawPath:", parsedURL.RawPath)
fmt. Println("ForceQuery:", parsedURL.ForceQuery)
fmt. Println("RawQuery:", parsedURL.RawQuery)
fmt. Println("רסיס:", parsedURL.Fragment)
fmt. Println("RawFragment:", parsedURL.RawFragment)
}

ה כתובת אתר לדוגמה המשתנה מכיל את כתובת האתר המלאה, שלא מנותחה, ואת ה- לְנַתֵחַ הפונקציה מנתחת את התוכן של כתובת אתר לדוגמה משתנה ומחזירה את כתובת האתר המנותחת. התוכנית מסתיימת בסדרת שיחות אל Println כדי להדגים את השדות האישיים של ה כתובת אתר struct.

הפונקציה לנתח לא בודקת אם כתובת URL אמיתית שקיימת בפועל, היא מנתחת את כתובת האתר באופן תחבירי. אתה יכול להשתמש ב http חֲבִילָה כדי לשלוח בקשת GET לכתובת האתר ולבדוק את התגובה:

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

funcרָאשִׁי() {
// כתובת האתר שברצונך לבדוק
URL דוגמה := " https://www.example.com"

// בצע בקשת HTTP GET לכתובת האתר
תגובה, טעות := http. קבל (כתובת אתר לדוגמה)

אם טעות != אֶפֶס {
fmt. Println (שגיאה)
לַחֲזוֹר
}

לִדחוֹת תְגוּבָה. גוּף. סגור()

// בדוק את קוד סטטוס התגובה
אם תְגוּבָה. StatusCode == http. StatusOK {
fmt. Println("כתובת אתר קיימת.")
} אַחֵר {
fmt. Println("כתובת האתר לא קיימת.")
}
}

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

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

קידוד ופענוח כתובות אתרים

ה כתובת אתר החבילה מספקת את לְהַצְפִּין שיטה לקידוד פרמטרים של כתובת אתר. ה לְהַצְפִּין הפונקציה אחוז-מקודדת תווים ורווחים מיוחדים בפרמטרים של כתובת URL.

יְבוּא (
"fmt"
"net/url"
)

funcרָאשִׁי() {
// צור כתובת אתר חדשה. מבנה ערכים
params := url. ערכים{}

// הוסף ערכים למבנה
params. לְהוֹסִיף("שֵׁם", "ג'ון סמית")
params. לְהוֹסִיף("גיל", "30")
params. לְהוֹסִיף("מִין", "זָכָר")

// מקודד את ה-struct למחרוזת
encodedParams := פרמטרים. לְהַצְפִּין()
fmt. Println (encodedParams)

// פלט: "age=30&gender=male&name=John+Smith"
}

ה רָאשִׁי הפונקציה יוצרת חדש ערכים מופע struct של כתובת אתר חבילה, ואת לְהוֹסִיף השיטה של ​​מופע ה-struct מוסיפה זוגות מפתח-ערך של נתונים למופע ה-struct.

ה לְהַצְפִּין השיטה ממירה את צמד המפתח-ערך לפורמט מחרוזת כתובת האתר "key1=value1&key2=value2&key3=value3".

אתה יכול לפענח מחרוזת כתובת URL מקודדת באמצעות ה ParseQuery פונקציה של כתובת אתר חֲבִילָה.

יְבוּא (
"fmt"
"net/url"
)

funcרָאשִׁי() {
// מחרוזת מקודדת של פרמטרים של כתובת URL
encodedParams := "age=30&gender=male&name=John+Smith"

// נתח את המחרוזת המקודדת לכתובת אתר. מבנה ערכים
params, err := url. ParseQuery (encodedParams)

אם טעות != אֶפֶס {
fmt. Println (שגיאה)
}

// הדפס את המבנה
fmt. Println (פרמטרים)

// פלט: מפה[גיל:[30] מין:[זכר] שם:[ג'ון סמית']]
}

ה מקודד פרמטר המשתנה הוא מחרוזת כתובת URL מקודדת. ה ParseQuery הפונקציה לוקחת את מקודד פרמטר משתנה ומחזירה את מחרוזת ה-URL המפוענחת ושגיאה.

חבילות Go אלה יכולות לקחת את משחק ניתוב האינטרנט שלך לשלב הבא

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

אתה יכול לנתב באמצעות חבילת http או חבילות פופולריות של צד שלישי כמו Gorilla Mux, Chi, Pat או Httprouter. חבילות אלו הופכות את הניתוב לקל יותר מחבילת http על ידי הפשטה של ​​חלק מהמורכבות שלה.