Tue Dec 31 2024 • 2 mins read
HTTP (HyperText Transfer Protocol) ဆိုတာ web ပေါ်ကနေ အချက်အလက်တွေကို ရယူဖလှယ်နိုင်ဖို့အတွက် အသုံးပြုတဲ့ protocol တနည်းအားဖြင့် ဆက်သွယ်ရေးနည်းပညာတခုဖြစ်ပါတယ်။ လွယ်လွယ်ပြောရရင် client (browser) နဲ့ server ကြား အချက်အလက်တွေ ဖလှယ်နိုင်ဖို့ဖြစ်ပါတယ်။ HTTP ဟာ အင်တာနက်ပေါ်ကနေ အချက်အလက်တွေ ရယူခြင်း၊ ပေးပို့ခြင်း စတဲ့လုပ်ငန်းစဉ်တွေအတွက် အခြေခံကျတဲ့ ဆက်သွယ်ရေးနည်းလမ်းတခုဖြစ်ပါတယ်။
HTTP ဘယ်လိုအလုပ်လုပ်သလဲ။
--
HyperText Transfer Protocol ဟာ request-response လို့ခေါ်တဲ့ လုပ်ငန်းစဉ်ပေါ်မှာ အခြေခံပါတယ်။ Client ဘက်က server ဘက်ကို request တခုပို့လိုက်တဲ့အခါ အဆိုပါ request ပေါ်မူတည်ပြီး server ဘက်က သက်ဆိုင်ရာအချက်အလက်တွေကို response အဖြစ် ပြန်ပို့ပေးမယ့်ပုံစံဖြစ်ပါတယ်။
ဥပမာ၊ ကျနော်တို့ရဲ့ browser ထဲမှာ URL လိပ်စာတခုကို ရိုက်ထည့်လိုက်တဲ့အခါ browser ဟာ အဆိုပါ လိပ်စာရှိရာ server ဆီကို HTTP request တခုပေးပို့လိုက်ပါတယ်။ ရရှိလာတဲ့ request ပေါ်မူတည်ပြီး သက်ဆိုင်ရာ အချက်အလက်တွေကို server ဘက်က response အနေနဲ့ ပြန်လည်ပေးပို့ပေးမှာဖြစ်ပါတယ်။ နမူနာအရဆိုရင် server ဘက်ကနေ web page တခုကို ပြန်ပို့ပေးမှာပါ။ အဲဒီပြန်ပို့ပေးလိုက်တဲ့ response ကို browser ဘက်ကလက်ခံရရှိပြီး screen ပေါ်မှာ ပြန်လည်ထုတ်ပြပေးတာပဲဖြစ်ပါတယ်။
ဒီလိုမျိုး request-response အပြန်အလှန်ပေးပို့ဆက်သွယ်ခြင်းအားဖြင့် ကျနော်တို့ လိုအပ်တဲ့ data အချက်အလက်တွေကို server ဆီက ရယူနိုင်သလို server ဆီကိုလည်း အချက်အလက်တွေ ပေးပို့ပြင်ဆင်နိုင်မှာဖြစ်ပါတယ်။
HTTP request ဆိုတာဘာလဲ။
--
HTTP request ဆိုတာ သတင်းအချက်အလက် ရယူဖို့ သို့မဟုတ် ပြောင်းလဲပြင်ဆင်ဖို့အတွက် client (browser) ကနေ server ဘက်ကို ပေးပို့လိုက်တဲ့ message အချက်အလက်တွေဖြစ်ပါတယ်။ HTTP request တခုမှာ ထည့်သွင်းပေးရမယ့် အစိတ်အပိုင်းတွေရှိပါတယ်။ အဲဒီ အစိတ်အပိုင်းတွေက -
1. Request line
2. Request header နဲ့
3. Request body တို့ဖြစ်ပါတယ်။
Request line မှာ HTTP method, URL နဲ့ version တွေပါဝင်ရပါမယ်။ HTTP method ဆိုတာ client ကနေ server ထံကို ပြုလုပ်မယ့် action ကို ကိုယ်စားပြုပါတယ်။ အချက်အလက်တွေကို ရယူချင်တာလား၊ ဒါမှမဟုတ် ပြင်ဆင်ပြောင်းလဲချင်တာလား စသည်ဖြင့်ပါ။ GET, POST, PUT, PATCH စသည်ဖြင့် ရည်ရွယ်ချက်အမျိုးမျိုးနဲ့အသုံးပြုလို့ရတဲ့ HTTP method အများအပြားရှိပါတယ်။ URL ကတော့ ဆက်သွယ်ရယူလိုတဲ့ အချက်အလက်တွေရဲ့ အင်တာနက်ပေါ်က တည်နေရာလိပ်စာဖြစ်ပါတယ်။ Version ကတော့ လက်ရှိ request ရဲ့ HTTP protocol version ကို ဖော်ပြတာဖြစ်ပါတယ်။ HTTP/1.1, HTTP/2, HTTP/3 စသည်ဖြင့်ပါ။
Request header မှာတော့ လိုအပ်ချက်ပေါ်မူတည်ပြီး တခြားသော ထပ်ပေါင်းအချက်အလက်တွေ၊ metadata တွေထည့်ပေးနိုင်ပါတယ်။ browser type, authentication token, cookie စသည်ဖြင့်ပါ။ အသုံးအများဆုံးက authorization header အဖြစ် token တွေထည့်သွင်းပေးပို့ခြင်းဖြစ်ပါတယ်။
Request body မှာတော့ server ထံ ပေးပို့လိုတဲ့ အချက်အလက်တွေကို ထည့်သွင်းပေးနိုင်ပါတယ်။ ဥပမာ၊ form data တွေ၊ ပြင်ဆင်ပြောင်းလဲလိုတဲ့ data တွေ စသည်ဖြင့်ပါ။
နမူနာ HTTP request တခုကို ကြည့်ပါ။
GET /products HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Cookie: VISITOR_INFO=kOe2UTUy;
ဒီနမူနာမှာဆိုရင် Request line ဟာ GET /products HTTP/1.1 ဖြစ်ပါတယ်။ HTTP method က GET ဖြစ်ပြီး URL တည်နေရာကတော့ example.com/products ဖြစ်ပါတယ်။ protocol version 1.1 ကိုအသုံးပြုထားပါတယ်။ Header ထဲမှာ browser type နဲ့ cookie အချက်အလက်တွေပါဝင်ပါတယ်။
HTTP response ဆိုတာဘာလဲ။
--
HTTP response ဆိုတာ client ပေးပို့လိုက်တဲ့ HTTP request ပေါ်မူတည်ပြီး server ဖက်က ပြန်လည်ပေးပို့လိုက်တဲ့ message အချက်အလက်တွေဖြစ်ပါတယ်။ Client တောင်းဆိုလိုက်တဲ့ အချက်အလက်တွေပါဝင်ပြီး တခြားသော metadata တွေနဲ့ status code တွေပါဝင်ပါတယ်။ ယေဘုယျအားဖြင့် response တခုမှာ status line, response header နဲ့ response body တို့ပါဝင်ပါတယ်။
Status line မှာ ဆက်သွယ်မှု အောင်မြင်/မအောင်မြင် သို့မဟုတ် လက်ခံရရှိ/မရရှိ အကြောင်းပြန်ပေးတဲ့ သင်္ကေတကုဒ် (status code) နဲ့ မက်ဆေ့တွေပါဝင်ပါတယ်။ Status code တွေဟာ ဂဏန်းသုံးလုံးတွဲကုဒ်တွေဖြစ်ပြီး ရည်ရွယ်ချက်အမျိုးမျိုးနဲ့ အသုံးပြုလို့ရတဲ့ ကုဒ်ပေါင်း (၅၀) ကျော်ရှိပါတယ်။ 1 နဲ့ စတဲ့ကုဒ်တွေဟာ လက်ခံရရှိကြောင်း အသိပေးတဲ့ကုဒ်တွေဖြစ်ပါတယ်၊ 2 နဲ့ စတဲ့ကုဒ်တွေဟာ ဆက်သွယ်မှု အောင်မြင်ကြောင်း အသိပေးတဲ့ကုဒ်တွေဖြစ်ပါတယ်၊ 3 နဲ့ စတဲ့ကုဒ်တွေဟာ လိပ်စာတည်နေရာပြောင်းလဲသွားကြောင်း အသိပေးတဲ့ကုဒ်တွေဖြစ်ပါတယ်၊ 4 နဲ့ စတဲ့ကုဒ်တွေဟာ client error တွေကို အသိပေးတဲ့ကုဒ်ဖြစ်ပြီး 5 နဲ့ စတဲ့ကုဒ်တွေကတော့ server error တွေကို အသိပေးတဲ့ကုဒ်တွေဖြစ်ပါတယ်။
အတွေ့များတဲ့ status code တွေက -
200 OK
(အောင်မြင်ကြောင်း အသိပေးခြင်း)
301 Moved Permanently
(လိပ်စာတည်နေရာပြောင်းလဲသွားခြင်း)
401 Unauthorized
(ဝင်ရောက်ခွင့်အထောက်အထားမရှိခြင်း)
404 Not Found
(ရယူလိုသောအချက်အလက်များမရှိတော့ခြင်း)
500 Internal Server Error
တို့ဖြစ်ပါတယ်။
Response header မှာတော့ metadata တွေနဲ့ တခြားသော ထပ်ပေါင်းအချက်အလက်တွေ ပါဝင်ပါတယ်။ content type, length, date, location စသည်ဖြင့်ပါ။
Response body မှာတော့ client ဖက်ကို ပြန်လည်ပေးပို့ပေးမယ့် data တွေပါဝင်ပါတယ်။ HTML, XML, JSON စသည်ဖြင့် format အမျိုးမျိုးနဲ့ ပြန်လည်ပေးပို့နိုင်ပါတယ်။ အများဆုံးအသုံးပြုတာက JSON format ဖြစ်ပါတယ်။
နမူနာ HTTP response တခုကို ကြည့်ပါ။
HTTP/1.1 200 OK
Date: Sun, 18 Oct 2009 08:56:53 GMT
Server: Apache/2.2.14 (Win32)
Content-Length: 4
Content-Type: text/html
<html><body><h1>It works!</h1></body></html>
ဒီနမူနာမှာဆိုရင် status line ဟာ HTTP/1.1 200 OK ဖြစ်ပါတယ်။ HTTP status code က 200 OK ဖြစ်ပြီး response header ထဲမှာ date, server, content type နဲ့ length စတဲ့ အချက်အလက်တွေပါဝင်ပါတယ်။ Response body အနေနဲ့ HTML document တခုကို ပြန်ပေးလာတာပဲဖြစ်ပါတယ်။
လက်တွေ့ အင်တာနက်ပေါ်မှာတော့ HTTP ထက် HTTPS (Hypertext Transfer Protocol Secure) ကိုသာ အသုံးပြုကြပါတယ်။ HTTPS ကို HTTP ရဲ့ secure version အဖြစ် အကြမ်းဖျင်း မှတ်သားနိုင်ပါတယ်။ HTTP နဲ့ HTTPS နှစ်ခုစလုံးဟာ web ပေါ်ကနေ အချက်အလက်တွေကို ရယူဖလှယ်ဖို့အတွက် အသုံးပြုနိုင်တဲ့ protocol တွေဖြစ်ပါတယ်။ HTTP က အချက်အလက်တွေကို plaintext ပုံစံနဲ့ ပေးပို့ဖယ်လှယ်ပါတယ်။ HTTPS ကတော့ အချက်အလက်တွေကို encrypt လုပ်ပြီး ပေးပို့ဆက်သွယ်ပါတယ်။ ဒါကြောင့် HTTPS က HTTP ထက်ပိုပြီး လုံခြုံပါတယ်။ HTTP က port 80 မှာ အလုပ်လုပ်ပြီး HTTPS ကတော့ port 443 မှာ အလုပ်လုပ်ပါတယ်။