64 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			64 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | ||
|  | title: Receive data with your web server | ||
|  | localeTitle: تلقي البيانات مع خادم الويب الخاص بك | ||
|  | ---
بمجرد إعداد خادم الويب الخاص بك والتأكد من أنه يمكن أن يقدم بعض المحتويات المفيدة ، قد ترغب في جعله أكثر تفاعلية عن طريق السماح له بقبول البيانات. دعونا نبدأ بكتابة بعض الرموز: | ||
|  | 
 | ||
|  |  `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` على النحو التالي: | ||
|  | 
 | ||
|  | 1.  `https://` - هذا هو البروتوكول | ||
|  | 2.  `google.com` - هذا هو اسم النطاق والمنفذ (في هذه الحالة لا يوجد منفذ مذكور - لذلك يستخدم المتصفح المنفذ الافتراضي للبروتوكول) | ||
|  | 3.  `/search` - هذا هو المسار | ||
|  | 4.  `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` ويقوم القالب بالباقي. | ||
|  | 
 | ||
|  | هذا بالطبع تطبيق بسيط لهذه الوظيفة ، ولكن يمكنك القيام بالكثير من الأشياء بها. على سبيل المثال: يمكنك قبول عناوين البريد الإلكتروني والسماح للبرنامج بتخزينها في ملف. |