أعمل حاليًا على إنشاء منصة التدوين الخاصة بي باستخدام Go وTempl وHTMX والتي سأستضيفها بنفسي. قررت أن هذا سيكون مشروعًا ممتعًا ومفيدًا للتعامل معه وسيساعدني أيضًا في اكتساب المعرفة حول هذه المكدس. في منشور المدونة هذا، سأشارك تجربتي وحلولي للتحدي الذي واجهته عند التعامل مع عمليات إعادة التوجيه باستخدام HTMX.
أثناء الانتهاء من وظائف المشرف، قررت أن الوقت قد حان للبدء أخيرًا في تطبيق HTMLX في المشروع. لقد بدأت بعنصر زر يرسل طلب POST إلى معالج تسجيل الخروج الخاص بي. عادة، سأقوم بإنجاز هذه المهمة باستخدام عنصر نموذج، ولكن كما ذكرت، فقد حان الوقت لبدء تطبيق HTMLX في المشروع. تكمن المشكلة في أنني أريد أن يظل إجراء POST يتصرف كنموذج وأن تكون الاستجابة من الخادم عبارة عن إعادة توجيه مرة أخرى إلى نقطة النهاية /.
إليك عنصر الزر الذي استخدمته:
المشكلة التي واجهتها هي أن الاستجابة لإعادة التوجيه لا تزال بتنسيق HTML، ويقوم HTMX بتبديل هذا المحتوى لعنصر زر تسجيل الخروج.
التعامل مع إعادة التوجيه باستخدام http.Redirect
func (app *application) handleLogoutPost(w http.ResponseWriter, r *http.Request) { // handle business logic... //... http.Redirect(w, r, "/", http.StatusSeeOther) }
الصورة: تم تبديل المحتوى باستخدام زر تسجيل الخروج
يمكن منع تبديل المحتوى عن طريق استبدال http.Redirect برأس HX-Redirect في الاستجابة والموقع المستهدف كقيمة له.
func (app *application) handleLogoutPost(w http.ResponseWriter, r *http.Request) { // handle business logic... //... // Write our HX-Redirect header with location and redirect w.Header().Set("HX-Redirect", "/") http.WriteHeader(http.StatusNoContent) }
الصورة: تمت إعادة توجيه المتصفح إلى / لاحظ عنوان url.
لقد كانت عملية إنشاء منصة التدوين الخاصة بي باستخدام Go وTempl وHTMX تجربة مفيدة حتى الآن. من خلال دمج HTMLX، سيظل الموقع قادرًا على الاحتفاظ بالعديد من ميزات التفاعل إذا كان موقع ويب حديثًا دون الحاجة إلى كتابة كود جافا سكريبت الإضافي وتقديمه. كان التعامل مع عمليات إعادة التوجيه باستخدام رأس HX-Redirect حلاً بسيطًا وفعالاً. آمل أن يساعد هذا المنشور أي شخص في مشاريعه ويشجعك على استكشاف إمكانات HTMLX في تطبيقات الويب الخاصة بك.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3