التوجيه ومعاملات المسارات
تسجيل المعالجات وتحليل معاملات URL
التوجيه ومعاملات المسارات درس مجاني في Go Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Go Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Go Academy 4 دروس في المجموع.
قيود mux القياسي
لا يدعم http.ServeMux الافتراضي معلمات المسار (مثل /users/{id}) أو التوجيه القائم على الطريقة. أضاف Go 1.22 دعمًا محسنًا للأنماط.
الأنماط المحسّنة في Go 1.22
بدءًا من Go 1.22، يدعم ServeMux بادئة الطريقة ومعلمات المسار:
mux.HandleFunc("GET /users/{id}", func(w http.ResponseWriter, r *http.Request) {
id := r.PathValue("id")
fmt.Fprintln(w, "user:", id)
})r.PathValue
تستخرج r.PathValue("name") مقطعًا مسمى من نمط عنوان URL (في Go 1.22 وما بعده).
// Pattern: "GET /products/{category}/{id}"
category := r.PathValue("category")
id := r.PathValue("id")تحليل المسار يدويًا
في Go < 1.22 أو عند وجود قواعد معقدة، استخرج مقاطع المسار باستخدام strings.Split(r.URL.Path, "/"):
parts := strings.Split(strings.Trim(r.URL.Path, "/"), "/")
// /users/42 → ["users", "42"]التوجيه حسب الطريقة
استخدم switch على r.Method لتنفيذ منطق خاص بكل طريقة داخل معالج واحد:
switch r.Method {
case http.MethodGet:
getHandler(w, r)
case http.MethodPost:
createHandler(w, r)
default:
w.WriteHeader(http.StatusMethodNotAllowed)
}موجّهات الجهات الخارجية الشائعة
توفر مكتبات مثل gorilla/mux وchi وhttprouter توجيهًا أكثر غنى، بما في ذلك قيود التعبيرات النمطية والمجموعات المسماة وسلاسل البرمجيات الوسيطة والموجّهات الفرعية.
موجّه chi
chi هو موجّه خفيف الوزن ومتوافق مع أسلوب Go، ومتوافق مع معالجات net/http:
r := chi.NewRouter()
r.Get("/users/{id}", getUser)
http.ListenAndServe(":8080", r)معلمات الاستعلام
اقرأ معلمات الاستعلام من r.URL.Query()، التي تُرجع خريطة من نوع url.Values:
page := r.URL.Query().Get("page")
if page == "" { page = "1" }البدل والمطابقة الشاملة
في أنماط Go 1.22، يكون {name...} بدلًا يطابق بقية المسار:
mux.HandleFunc("/static/{path...}", serveStatic)المسارات المتداخلة
جمّع المسارات المرتبطة باستخدام موجّه فرعي أو بتسجيل المعالجات مع بادئة مشتركة. تنشئ r.Route في chi موجّهًا فرعيًا لبادئة معينة.
إعادة التوجيه عند الشرطة المائلة اللاحقة
يعيد http.ServeMux التوجيه تلقائيًا من /path/ إلى /path أو بالعكس. لتعطيل ذلك، أزل الشرطات المائلة اللاحقة في برمجية وسيطة قبل أن يتلقى mux الطلب.
تحقق سريع
في Go 1.22 وما بعده، كيف تستخرج مقطع {id} من نمط عنوان URL المطابق؟
مراجعة: التوجيه ومعلمات المسار
النقاط الرئيسية:
- Go 1.22: بادئة الطريقة + معلمات المسار {name} في ServeMux
- تستخرج r.PathValue("name") المقاطع المسماة
- استخدم switch على الطريقة لتنفيذ منطق خاص بكل طريقة
- استخدم الموجّهات التابعة لجهات خارجية (chi وgorilla/mux) للتوجيه المعقد
الأسئلة الشائعة
هل درس «التوجيه ومعاملات المسارات» مجاني؟
نعم — نص درس «التوجيه ومعاملات المسارات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Go Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Go Academy 4 دروس في المجموع.
ماذا ستتعلم في «التوجيه ومعاملات المسارات»؟
تسجيل المعالجات وتحليل معاملات URL تتمرن على Go Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Go Academy؟
لا تُشترط خبرة سابقة. Go Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «التوجيه ومعاملات المسارات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Go Academy هذا؟
نعم. كل درس في Go Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- إنشاء خادم HTTP
- التوجيه ومعاملات المسارات
- نمط Middleware
- الإيقاف السلس