3.6 KiB
title, localeTitle
| title | localeTitle |
|---|---|
| Receive data with your web server | تلقي البيانات مع خادم الويب الخاص بك |
بمجرد إعداد خادم الويب الخاص بك والتأكد من أنه يمكن أن يقدم بعض المحتويات المفيدة ، قد ترغب في جعله أكثر تفاعلية عن طريق السماح له بقبول البيانات. دعونا نبدأ بكتابة بعض الرموز:
`package main
import ( "net/http" "html/template" )
type PAGE struct { NAME string }
var page PAGE
func main() { http.HandleFunc("/", servePage) http.ListenAndServe(":8080", nil) }
func servePage(writer http.ResponseWriter, reqest *http.Request) { page.NAME = request.FormValue("name") template := template.New("sayHello") template, _ = template.Parse("Hello {{.NAME}}!") template.Execute(writer, page) } `
دعونا كسر هذا الرمز إلى أسفل. أولاً وقبل كل شيء ، نبدأ باستيراد net/http لخادم الويب و html/template أجل templating. تفترض هذه المقالة أنك تعرف بالفعل كيفية القالب في Go. إذا كنت لا تعرف هذا حتى الآن ، يجب عليك قراءة المقال حول templating أولاً.
ثم نقوم بإنشاء نوع يسمى PAGE ، مع فتحة واحدة تسمى NAME (هذه string ). كما نقوم أيضًا بإنشاء متغير عالمي يسمى page وهو من النوع PAGE : البنية التي أنشأناها للتو.
في دالة servePage يوجد شيء واحد مهم بالفعل لهذه المقالة: طريقة FormValue نستخدمها في request .
قبل أن نتابع ، تحتاج أولاً إلى معرفة كيفية إنشاء URL . لنأخذ URL التالي كمثال:
https://google.com/search?q=free+code+camp
إذا أدخلت URL أعلاه في المتصفح ، فستجري بحثًا في Google عن free code camp . تم بناء URL على النحو التالي:
https://- هذا هو البروتوكولgoogle.com- هذا هو اسم النطاق والمنفذ (في هذه الحالة لا يوجد منفذ مذكور - لذلك يستخدم المتصفح المنفذ الافتراضي للبروتوكول)/search- هذا هو المسارq=free+code+camp- هذا هوquery
الاستعلام هو الجزء الذي نتحدث عنه في هذه المقالة. يشاهد خادم Google URL هذا وبسبب السمة q في الاستعلام وقيمة q - في هذه الحالة free+code+camp - فإنه يعرف المكان الذي يجب البحث عنه.
يمكننا أيضًا تطبيق ذلك على خادمنا. لنطلق البرنامج وننقل المتصفح إلى:
http://localhost:8080/?name=world
سيكون الرد:
Hello world!
كيف يعمل هذا؟ حسنًا ، لقد أعطينا FormValue معلمة name . بهذه الطريقة ، تعلم FormValue أننا نريد قيمة سمة name في طلب البحث. في هذه الحالة هو world ، لذلك الأسلوب يعود world . ثم يتم وضع تلك السلسلة في متغير page ويقوم القالب بالباقي.
هذا بالطبع تطبيق بسيط لهذه الوظيفة ، ولكن يمكنك القيام بالكثير من الأشياء بها. على سبيل المثال: يمكنك قبول عناوين البريد الإلكتروني والسماح للبرنامج بتخزينها في ملف.