Web Development အတွက် သိသင့်သော အခြေခံအကြောင်းအရာများ

ဒီတခါ‌ပြောမှာကတော့ Web Development နဲ့သက်ဆိုင်တဲ့ အခြေခံသိသင့်တာလေးတွေပဲဖြစ်ပါတယ်။  လုံးဝ beginners တွေအတွက်ပါ။ website တွေကို လက်တွေ့မရေးခင်မှာ ခုပြောပြမယ့် အခြေခံအကြောင်းအရာတွေကို သိထားသင့်ပါတယ်။ ပြောမယ့် အကြောင်းအရာတွေကို ခေါင်းစဉ်လေးတွေနဲ့ ခွဲထားပါတယ်။

(1)Website & Web Document(Hypertext Document)
(2)Web Server & Web Browser 
(3)Domain Name & URL
(4)HTTP & Client-Server Communication

(1)Website & Web Document(Hypertext Document)
	Website တစ်ခုဆိုတာ သက်ဆိုင်ရာ Web Pages (Or Web Documents) တွေကို စုစည်းဖော်ပြထားတဲ့ နေရာတခုလို့ပြောလို့ရတယ်။ ဥပမာအနေနဲ့ www.facebook.com ကိုကြည့်လိုက်ပါ။ www.facebook.com ဆိုတာ Website (or web app) တစ်ခုပါ။ (တကယ်တော့ website နဲ့ web application က အနည်းငယ်ကွာခြားပါတယ် ဒီပို့စ်မှာတော့ websiteလို့ပဲပြောသွားပါမယ်)သူ့မှာ user profile တွေကြည့်လို့ရမယ့် စာမျက်နှာရှိမယ်၊ newsfeeds တွေကြည့်လို့ရမယ့် စာမျက်နှာရှိမယ်။ အဲ့စာမျက်နှာတွေကို Web Pages လို့ခေါ်ပါတယ်။ Website တစ်ခုမှာ Web Pages ပေါင်းမြောက်မြားစွာ ရှိနိုင်ပါတယ်။
ဒီနေရာမှာ အခြေခံအကျဆုံး မေးစရာရှိလာတယ်။ Website, webpages, web documents လို့ ပြောနေကြတာ အဲ့မှာ Web ဆိုတာက ဘာလဲ။ (မြန်မာလိုတိုက်ရိုက်တွေ ပြောမနေတော့ဘူး ရှုပ်ကုန်မှာစိုးလို့) တကယ်တော့ Web ဆိုတာ နည်းပညာတခုပါ။ World Wide Web ( WWW ) လို့လဲ ခေါ်ကြတယ်။ WWW ဆိုတဲ့ web နည်းပညာက အင်တာနက်ပေါ်မှာ ဒေတာတွေကို သယ်ယူပို့ဆောင်ပေးတဲ့ အဓိကနည်းပညာပဲဖြစ်ပါတယ်။ 
ကျွန်တော်ခုနပြောခဲ့တဲ့ Web Documents ဆိုတာကို အများအားဖြင့် Hypertext Documents လို့ခေါ်ကြတယ်။ Hypertext Document ဆိုတာ Web Page တွေဖန်တီးတဲ့နေရာမှာသုံးတဲ့ document အမျိုးအစားပဲဖြစ်ပါတယ်။ Hypertext Document တွေမှာက စာသား(text)တွေ အပြင် ပုံတွေ၊ စာရင်းဇယားတွေနဲ့  နှစ်သက်ရာ ဖြည့်သွင်းနိုင်တဲ့ ဖောင်တွေပါဝင်နိုင်တယ်။ အဓိကက Links တွေပါလို့ရတယ်။ အဲ့linksတွေကို သုံးပြီး document တစ်ခုနဲ့တစ်ခုကို ဆက်သွယ်ချိတ်ဆက်ထားလို့ရတယ်။အဲ့linksတွေကို Hyperlink လို့ခေါ်တယ်။ ဒါကြောင့် Web page တွေအတွက် Hypertext Document တွေကို သုံးကြတယ်။ အဲ့လိုမျိုး Hypertext Document တွေကို စုစည်းဖော်ပြထားတဲ့နေရာကို Website လို့ခေါ်တယ်။

(2)Web Server & Web Browser
	Web Server ဆိုတာ တကယ်တော့ ကွန်ပြူတာတစ်လုံးပါပဲ။ အဲ့ကွန်ပြူတာထဲမှာ သက်ဆိုင်ရာ Website အတွက် Web Documents တွေ၊ ဓါတ်ပုံတွေ အစရှိတဲ့လိုအပ်တဲ့ file တွေကို သိမ်းဆည်းထားတယ်။  
	Web Browser ကတော့ Web Server ဆီကနေ လိုအပ်တဲ့ data တွေကို ရယူပြီး၊ ရလာတဲ့ Web Document တွေကို ပြသပေးနိုင်တဲ့ Software ပဲဖြစ်ပါတယ်။ Web Browser ကို Web Client လို့လဲခေါ်လို့ရတယ်။

(3)Domain Name & URL
	Domain name ဆိုတာက Website တစ်ခုကိုရည်ညွှန်းတဲ့ နာမည်တစ်ခုပဲဖြစ်ပါတယ်။ ဥပမာ facebook.com ဆိုရင် facebook ဆိုတာ Domain Name ၊ .com ဆိုတာက Domain Extension လို့ခေါ်တယ်။ Domain Extension တွေက .com, .net, .org အစရှိသဖြင့် အမျိးမျိုးရှိတယ်။ ဒါတွေကို TLD ( Top Level Domain ) လို့လဲခေါ်တယ်။ TLD ကိုမှ နောက်ထပ် ထပ်ခွဲလို့ ရသေးတယ်။ စိတ်ဝင်စားရင်ထပ်ရှာဖတ်ကြည့်ဖို့တိုက်တွန်းပါတယ်။ နောက်တစ်ခုက URL (Uniform Resource Locators)။ လွယ်လွယ်ပြောရရင် အားလုံးမြင်နေကျဖြစ်တဲ့ Web Browser တွေမှာ ရိုက်ထည့်ရတဲ့ လင့်တွေကို URL လို့ခေါ်လို့ရတယ်။ တကယ်က URI, URN, URL ဆိုပြီးရှိတာ။ ဒီသုံးခုက နည်းနည်းတူချင်သယောင်ရှိပြီး confuse ဖြစ်စေတယ်။ ဒီပို့စ်မှာတော့ အဲ့3ခုအကြောင်းကို အတိအကျမပြောတော့ဘူး။ သေချာအတိအကျ သိချင်ရင်တော့ ဒီလင့်မှာ သွားဖတ်လို့ရတယ်။ 
https://www.w3.org/TR/uri-clarification

(4)HTTP & Client-Server Communication
	HTTP ဆိုတာ URL တွေရဲ့ရှေ့မှာအများဆုံးတွေ့ရတယ့် http:// ကိုပြောတာဖြစ်ပါတယ်။ စကားလုံးအရှည်ကတော့ Hyper Text Transfer Protocol ဖြစ်ပါတယ်။ HTTP က WWW (World Wide Web) မှာ data communication လုပ်ဖို့သုံးတဲ့ နည်းပညာဖြစ်ပါတယ်။ Web Client နဲ့ Web Server နှစ်ခုကြားမှာ Hypertext Document တွေနဲ့ တခြား data တွေကို သယ်ယူပို့ဆောင်ပေးတဲ့ နည်းပညာပဲဖြစ်ပါတယ်။ Web Client ဆိုတာ Web Server တွေနဲ့ ဆက်သွယ်နိုင်တဲ့ Web Browser ကိုပြောတာပါ။ 
	နောက်ထပ်သိထားရမှာက Client ကနေ Server ကို data တွေရယူဖို့ ဆောင်ရွက်ခြင်းကို Request လုပ်တယ်လို့ ခေါ်ပြီး၊ Server ကနေ Client ကို data တွေပြန်လည်ပို့ဆောင်ခြင်းကို Respond လုပ်တယ်လို့ ခေါ်ပါတယ်။ ဒီလုပ်ငန်းစဉ်ကို Client-Server Communication လို့ခေါ်ပါတယ်။

HTTP Request Methods
	ကျွန်တော်တို့ ခုနကပြောခဲ့တဲ့အတိုင်း Client ကနေ Server ကို request လုပ်တဲ့အခါမှာ methods တွေအမျိုးမျိုးရှိတယ်။ အဲ့ methods တွေကို Http request methods (or) Http Verbs လို့ခေါ်တယ်။ အသုံးများတဲ့ request methods တွေကတော့ GET , POST, PUT, DELETE တို့ပဲဖြစ်ပါတယ်။ အခြေခံအားဖြင့် GET request ကတော့ Server ဆီကနေ အချက်အလက်တွေကို ရယူလိုတဲ့အခါမှာသုံးတယ်။ POST request ကတော့ Server ဆီသို့ အချက်အလက်အသစ်တွေကို ပို့ပေးလိုတဲ့အခါမှာသုံးတယ်။ PUT request ကတော့ Server မှာလက်ရှိ ရှိနေတဲ့ အချက်အလက်တွေကို ပြုပြင်လိုတဲ့အခါမှာသုံးပါတယ်။ DELETE request ကတော့ အချက်အလက်တွေကို ပယ်ဖျက်လိုတဲ့အခါမှာသုံးပါတယ်။ ဒါကတော့ အခြေခံအားဖြင့် ဖော်ပြပေးထားတဲ့ request methods တွေပဲဖြစ်ပါတယ်။ နောက်ထပ်အခြား request methods တွေလဲရှိပါသေးတယ်။ 

HTTP Request Header 
	HTTP request header ဆိုတာ http request တွေလုပ်ဆောင်တဲ့အခါမှာ သုံးတဲ့ သတ်မှတ်ပုံစံပဲဖြစ်ပါတယ်။ GET request header နမူနာပုံစံကို အောက်မှာကြည့်နိုင်ပါတယ်။

GET /home.html HTTP/1.1
Host: domain.com
User-Agent: Mozilla/5.0 
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br

Line 1 က GET ဆိုတာ GET method ကို ပြောတာ၊ သူ့နောက်က home.html က ရယူလိုတဲ့ URL ကိုပြောတာ ၊ ပီးတော့ HTTP/1.1 က HTTP version ကိုဖော်ပြတာပါ။
Line 2 က Host ဆိုတာ Server Address ကိုပြောတာပါ။
Line 3 က User-agent ဆိုတာ Client ရဲ့အမျိုးအစားကိုပြောတာပါ။
Line 4 က Accept-Language ဆိုတာ Client လက်ခံနိုင်တဲ့ Language ကိုပြောတာပါ။
Line 5 က Accept-Encoding ဆိုတာ Client လက်ခံနိုင်တဲ့ Content Encoding Algorithms တွေကိုပြောတာပါ။
ဒါတွေကတော့ အခြေခံကျတဲ့ Get Request header ဥပမာတခုပဲ ဖြစ်ပါသည်။

HTTP Response Status Code
	Http response status code ဆိုတာက Client ရဲ့ request အပေါ်မူတည်ပြီး server က အကြောင်းပြန်တဲ့ ကုဒ်တွေပဲဖြစ်ပါတယ်။ ဥပမာ ပြောရရင် တခါတလေ ကျွန်တော်တို့ website တစ်ခုကို ဝင်လိုက်တဲ့အခါ 404 Not Found ဆိုပြီး ပြနေတာကို တွေ့ရတတ်တယ်။ အဲ့ 404 ဆိုတာ client က request လိုက်တဲ့ resource ကို server က ရှာလို့မတွေ့ဘူး၊ အဲ့ resource ရှိမနေဘူးလို့ အကြောင်းပြန်တဲ့ Response status code ပဲဖြစ်ပါတယ်။

Responses တွေကို အမျိုးအစား ၅ မျိုးခွဲခြားထားတယ်။ 
1.Informational responses (100–199)
2.Successful responses (200–299)
3.Redirects responses (300–399)
4.Client errors responses (400–499)
5.Server errors responses (500–599)
အားလုံးရဲ့အသေးစိတ်ကို မိမိဘာသာ ထပ်မံလေ့လာကြည့်စေလိုပါတယ်။

HTTP Response Header
	HTTP response header ဆိုတာ client က တောင်းယူလိုက်တဲ့ request ပေါ်မူတည်ပြီး ပြန်လည်အကြောင်းပြန်တဲ့အခါမှာ သုံးတဲ့ သတ်မှတ်ပုံစံပဲဖြစ်ပါတယ်။ HTTP response header နမူနာပုံစံကို အောက်မှာကြည့်နိုင်ပါတယ်။

HTTP/1.1 200 OK
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Mon, 18 Jul 2016 16:06:00 GMT
Server: Apache

Line 1 က HTTP version ကိုဖော်ပြပြီး၊ 200 OK ဆိုတာက request ကို အောင်မြင်စွာ လက်ခံရရှိကြောင်း ဖော်ပြခြင်းဖြစ်ပါတယ်။
Line 2 က Content Encoding Algorithm အမျိုးအစားကို ဖော်ပြတာပါ။
Line 3 က Content အမျိုးအစားကို ဖော်ပြတာပါ။
Line 4 က Response header ပို့လိုက်တဲ့ date ကိုဖော်ပြတာပါ။
Line 5 က Server အမျိုးအစားကို ဖော်ပြတာပါ။
အထက်မှာဖော်ပြခဲ့တာကတော့ အခြေခံကျတဲ့ Response Header ဥပမာတစ်ခုပဲဖြစ်ပါတယ်။

ဒီလောက်ဆိုရင် Web Development အတွက် အခြေခံသိသင့်တဲ့ အကြောင်းအရာတချိူ့ကို နားလည်မယ်ထင်ပါတယ်။