القراء مثلك يساعدون في دعم MUO. عند إجراء عملية شراء باستخدام الروابط الموجودة على موقعنا ، فقد نربح عمولة تابعة. اقرأ أكثر.

تعد عناوين URL (محددات مواقع الويب) واحدة من أهم أجزاء البنية التحتية للإنترنت. أثناء إنشاء تطبيقات الويب ، ستحتاج إلى معالجة عناوين URL لتحديد موقع الموارد واستردادها.

عند إنشاء تطبيقات ويب أكثر تعقيدًا ، ستحتاج إلى العمل باستخدام عناوين URL بمستوى أدق. قد تحتاج إلى تحديد معلمات النظام واسم المضيف والمسار والاستعلام. ستحتاج أيضًا إلى معرفة كيفية تشفير عناوين URL وفك تشفيرها حتى تتمكن من التعامل مع الأحرف الخاصة والحفاظ على أمان تطبيق الويب الخاص بك.

توفر مكتبة Go القياسية حزمة net / url للتعامل مع عناوين URL ومكونات URL.

حزمة URL

ال عنوان url توفر الحزمة وظائف وميزات شاملة للعمل معها عناوين URL وأجزائها المنفصلة. يوفر وظائف لتحليل عناوين URL وإنشاءها وتشفيرها وفك تشفيرها ، مما يجعل الحزمة مفيدة لتطوير الويب.

بعض الميزات الرئيسية لبرنامج عنوان url الحزمة هي القدرة على تحليل عناوين URL إلى مكونات فردية للمعالجة وبناء عنوان URL لطلبات HTTP. ال عنوان url توفر الحزمة أيضًا ملف URL هيكل مع تحليل طريقة لتحليل السلاسل في عناوين URL.

instagram viewer

ها هي عنوان url. URL نموذج البناء:

طَرد رئيسي

يكتب URL هيكل {
// المخطط هو مخطط بروتوكول عنوان URL ،
// مثل "http" أو "https"
مخطط خيط

// يُستخدم معتم للاحتفاظ بأي بيانات غير شفافة
// التي يجب ترميزها في عنوان URL
مبهمة خيط

// يحتفظ المستخدم بمعلومات عن المستخدم الذي قدم الطلب ،
// مثل اسم المستخدم وكلمة المرور
المستخدم * معلومات المستخدم

// المضيف هو اسم المضيف أو عنوان IP
// من الخادم الذي يستضيف URL
يستضيف خيط

// المسار هو مسار URL على الخادم
طريق خيط

// RawPath هو الأصل ،
// مسار URL المشفر
RawPath خيط

// ForceQuery يشير إلى ما إذا كان يجب أن يتضمن عنوان URL سلسلة استعلام
// حتى لو كانت فارغة
ForceQuery منطقي

// RawQuery هو الأصل ،
// سلسلة الاستعلام المشفرة من URL
RawQuery خيط

// Fragment هو معرف الجزء الخاص بعنوان URL ،
// تستخدم للارتباط بعنصر معين في الصفحة
شظية خيط

// RawFragment هو الأصل ،
// معرّف الجزء المشفر لعنوان URL
RawFragment خيط
}

معرفة كيفية الوصول إلى أجزاء مختلفة من URL يمكن أن يكون الهيكل مفيدًا لمهام مثل التحقق من الصحة.

تحليل عناوين URL باستخدام وظيفة التحليل

ال تحليل وظيفة عنوان url توفر الحزمة وظيفة لتحليل سلاسل URL إلى مكونات فردية. ال تحليل تأخذ الدالة عنوان URL واحدًا كوسيطة وتقوم بإرجاع مؤشر إلى ملف عنوان url. URL هيكل يحتوي على البيانات التي تم تحليلها لعنوان URL ونوع الخطأ.

إليك كيف يمكنك استخدام تحليل وظيفة لاسترداد عناصر URL.

يستورد (
"FMT"
"net / url"
)

funcرئيسي() {
// عنوان URL الذي تريد تحليله
exampleURL: = " https://www.example.com/path? param1 = value1 & param2 = value2 "

// تحليل عنوان URL
parsedURL ، يخطئ: = url. تحليل (exampleURL)

لو يخطئ! لا شيء {
FMT. Println (يخطئ)
يعود
}

// طباعة جميع حقول URL
FMT. Println ("مخطط:"، parsedURL.Scheme)
FMT. Println ("مبهمة:"، parsedURL.Opaque)
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)
}

ال exampleURL متغير يحمل عنوان URL الكامل وغير المحلل و تحليل وظيفة يوزع محتوى exampleURL متغير وإرجاع عنوان URL الذي تم تحليله. ينتهي البرنامج بسلسلة من المكالمات إلى Println لتوضيح الحقول الفردية في URL هيكل.

لا تتحقق وظيفة التحليل مما إذا كان عنوان URL حقيقيًا موجودًا بالفعل ، بل تقوم فقط بتحليل عنوان URL بشكل بناءي. يمكنك استخدام ال http طَرد لتقديم طلب GET إلى عنوان URL والتحقق من الاستجابة:

يستورد (
"FMT"
"net / http"
)

funcرئيسي() {
// عنوان URL الذي تريد التحقق منه
exampleURL: = " https://www.example.com"

// قم بإجراء طلب HTTP GET إلى عنوان URL
الاستجابة ، يخطئ: = http. الحصول على (exampleURL)

لو يخطئ! لا شيء {
FMT. Println (يخطئ)
يعود
}

تأجيل إجابة. جسم. يغلق()

// تحقق من رمز حالة الاستجابة
لو إجابة. كود الحالة == http. الحالة موافق {
FMT. Println ("عنوان URL موجود".)
} آخر {
FMT. Println ("عنوان URL غير موجود.")
}
}

ال رئيسي وظيفة تجعل أ يحصل طلب إلى exampleURL باستخدام يحصل وظيفة http طَرد. تقوم هذه الوظيفة بإرجاع مثيل استجابة ونوع خطأ. ينتهي البرنامج بامتداد لو بيان للتحقق من وجود موقع الويب عن طريق التحقق من رمز حالة HTTP ضد ال الحالة ثابت من http طَرد.

يتيح لك هذا الأسلوب اتخاذ إجراءات بناءً على نتيجة الفحص ، مثل إعادة توجيه إلى صفحة مختلفة ، أو عرض رسالة خطأ ، أو إعادة محاولة الطلب بعد معين فترة.

ترميز وفك تشفير معلمات URL

ال عنوان url توفر الحزمة تشفير طريقة لتشفير معلمات URL. ال تشفير النسبة المئوية للوظيفة ترميز الأحرف الخاصة والمسافات في معلمات URL.

يستورد (
"FMT"
"net / url"
)

funcرئيسي() {
// إنشاء عنوان url جديد. بنية القيم
params: = عنوان url. قيم{}

// إضافة قيم إلى الهيكل
بارامز. يضيف("اسم", "جون سميث")
بارامز. يضيف("عمر", "30")
بارامز. يضيف("جنس", "ذكر")

// ترميز البنية في سلسلة
encodedParams: = params. ترميز ()
FMT. Println (encodedParams)

// الإخراج: "العمر = 30 والجنس = ذكر & الاسم = جون + سميث"
}

ال رئيسي وظيفة تخلق ملف قيم مثيل هيكل عنوان url الحزمة و يضيف طريقة مثيل البنية تضيف أزواجًا من البيانات ذات القيمة الأساسية إلى مثيل البنية.

ال تشفير تقوم الطريقة بتحويل زوج المفتاح والقيمة إلى تنسيق سلسلة URL "key1 = value1 & key2 = value2 & key3 = value3".

يمكنك فك تشفير سلسلة URL المشفرة بامتداد تحليل الاستعلام وظيفة عنوان url طَرد.

يستورد (
"FMT"
"net / url"
)

funcرئيسي() {
// سلسلة مشفرة من معلمات URL
encodedParams: = "العمر = 30 والجنس = ذكر & الاسم = جون + سميث"

// تحليل السلسلة المشفرة في عنوان url. بنية القيم
params ، يخطئ: = url. ParseQuery (encodedParams)

لو يخطئ! لا شيء {
FMT. Println (يخطئ)
}

// طباعة الهيكل
FMT. Println (بارامس)

// الإخراج: خريطة [العمر: [30] الجنس: [ذكر] الاسم: [جون سميث]]
}

ال مشفرة المعلمة المتغير عبارة عن سلسلة URL مشفرة. ال تحليل الاستعلام تأخذ الوظيفة في مشفرة المعلمة متغير وإرجاع سلسلة URL التي تم فك ترميزها وخطأ.

يمكن أن تنقل حزم Go هذه لعبة توجيه الويب إلى المستوى التالي

تساهم عناوين URL التي تستخدمها لصفحات تطبيق الويب الخاص بك في أدائها وظهورها على محركات البحث. توجيه الويب هو عملية توجيه الطلبات الواردة إلى وظيفة المعالج المناسبة بناءً على عنوان URL.

يمكنك التوجيه باستخدام حزمة http أو حزم الطرف الثالث الشائعة مثل Gorilla Mux أو Chi أو Pat أو Httprouter. تجعل هذه الحزم التوجيه أسهل من حزمة http من خلال استخلاص بعض تعقيداتها.