System

REST API

မင်္ဂလာပါခင်ဗျာ။

ကျွန်တော့်နာမည်က သုထက်ထွန်းပါ။ လက်ရှိမှာ Spiceworks Myanmar Company တွင် Web Developer အဖြစ်လုပ်ကိုင်နေပါတယ်။ ဒီ Blog မှာ REST API အကြောင်းနဲ့ပတ်သက်ပြီး ဆွေးနွေးသွားမှာပဲဖြစ်ပါတယ်။ စလိုက်ကြရအောင်..

API (Application Programming Interface) သည် software program များတစ်ခုနဲ့တစ်ခု ဆက်သွယ်အသုံးပြုနိုင်စေရန် ဖန်တီးရည်ရွယ်ထားပါတယ်။ သူ့ကို Developers တွေက program အရ သင့်တော်အသုံးပြုလို့ရစေရန် ဖန်တီးရပါတယ်။ API ဘယ်လိုအလုပ်လုပ်လဲဆိုတာတွေပြောပြဖို့ အကောင်းဆုံးဥပမာလေးတစ်ခုရှိပါတယ်။ API ကို waiter တစ်ယောက်အနေနဲ့ တွေးကြည့်လိုက်ပါ။ ပုံမှန် ကျွန်တော်တို့ စားသောက်ဆိုင်သွားရင် menu ကြည့်တယ်..ကြိုက်တဲ့အစားအသောက်တွေ့ရင် waiter ကို order မှာတယ်။ waiter ကနေ ဆိုင်မီးဖိုချောင်ကို order ပြန်ပြောတယ်။ မှာထားတဲ့ order ရရင် waiter ကနေ စားသုံးသူဆီကို ပြန်လာပို့ပေးတယ်။ အဲ့process ကတော့ အားလုံးနဲ့ ရင်းနှီးပြီးသားဖြစ်မှာပါ။ အဲ့ process အတိုင်းပဲ API သည် waiter တစ်ယောက်ကဲ့သို့ လုပ်ဆောင်ပါတယ်။ Client request အတိုင်း API က System Server သို့ပို့ပေးပြီး တောင်းဆိုထားတဲ့အချက်အလက်အတိုင်း response ပြန်ပေးပါတယ်။ ဥပမာက အရမ်းမရှုပ်ထွေးလို့ သဘောပေါက်စေမှာပါ။ အဲ့တာဆို ကျွန်တော်တို့ ဆက်လိုက်ကြရအောင်..

အ‌ခုကျွန်တော်တို့ပြောမယ့်အကြောင်းက  Rest API အကြောင်းပါ။ သူ့ကိုအရှည်ကောက် “Representational State Transfer” လို့ခေါ်ပါတယ်။ Rest Technology အသုံးပြုထားလို့ သင့်တော်တဲ့ internal usage ကိုဖန်တီးပေးနိုင်စွမ်းရှိပါတယ်။ နည်းပညာတစ်ခုနဲ့သဘောတရားအရတော့ ကောင်းကျိုး ဆိုးကျိုးတော့ရှိမှာပါပဲ။ Rest API ကို Developer တွေဖန်တီးရာမှာ တစ်သတ်မတ်တည်းဖြစ်အောင် standard rules တွေသတ်မှတ်ထားပါတယ်။ ကျွန်တော်က Rest API ကိုအသုံးပြုရာမှာ Developer တွေအနေနဲ့ သိထားရမယ့် standard rules တွေကို အောက်မှာ ဆက်ပြီး ဆွေးနွေးသွားပါမယ်။

ပထမဆုံးအနေနဲ့ ကျွန်တော်တို့က specific URL တစ်ခုနဲ့ ဆက်သွယ်လိုက်တဲ့အခါမှာ data အစုတစ်ခုရလာပါလိမ့်မယ်။ အဲ့ဒါကို “Resource” လို့ခေါ်ပါတယ်။ Resource သည် document လည်းဖြစ်နိုင်သလို image, non-virtual object စတာတွေလည်းဖြစ်နိုင်ပါတယ်။ Resource ရရှိစေရန် ဆက်သွယ်တဲ့ URL တိုင်းကို “Request” လို့ခေါ်ပြီး Resource တစ်ခုပြန်ပို့ပေးလာတာသည် “Response” ဖြစ်ပါတယ်။ အဲ့တော့ Rest API Request တစ်ခုရရှိဖို့ ရှိသင့်တဲ့ အချက် (၄)ချက်ရှိပါတယ်။
1. The endpoint
2. The method
3. The headers
4. The data (or body)

The endpoint ဆိုတာက Client request လုပ်မယ့် specific URL ပါ။ ဥပမာအနေနဲ့ https://api.instantwebtools.net/ ပါ။ နောက်မှာ ကျွန်တော် နမူနာ endpoint တွေကို စမ်းပြသွားပေးပါမယ်။ အခု နားလည်အောင် အရင်ဆက်လက်ဆွေးနွေးပါမယ်။ Endpoint ကိုထပ်ပြီးဖြည့်စွက်ပေးတာကတော့ path ပါ။ သူက specific endpoint ကနေပြီး သွားချင်တဲ့နေရာ(request) ကိုထပ်ပေါင်းထည့်တဲ့သဘောပါ။ ပြောချင်တာက path တွေကအရေးကြီးပါတယ်။ တိကျတဲ့ endpoint path တွေသိရမှ လိုချင်တဲ့ resource ကိုရရှိမှာပါ။ API ‌ရေးတဲ့ developer အနေနဲ့ နောက်ဆုံး path and resource တွေကို API Documentation အဖြစ်ထုတ်ပေးရပါတယ်။ အဲ့ဒါမှ လိုအပ်တာတွေကို ဖြေရှင်းပြီးသားဖြစ်မှာပါ။

The method ကတော့ server ကို request လုပ်တဲ့နေရာမှာသုံးတဲ့ request method အမျိုးအစားတွေပဲဖြစ်ပါတယ်။ Get, Post, Put, Patch နဲ့ Delete method ဆိုပြီး ငါးမျိုးခွဲခြားထားပါတယ်။ သူတို့က Database operations တွေဖြစ်တဲ့ Create, Read, Update, Delete (CRUD) သဘောမျိုးလုပ်ဆောင်ကြပါတယ်။ Get Method သည် server က data တွေတောင်းခံတဲ့နေရာမှာသုံးပါတယ်။ Post Method သည် server ပေါ်မှာ data တွေဖန်တီးချင်တဲ့အခါသုံးပါတယ်။ ဖန်တီးချင်တဲ့ data ကိုတော့ default JSON Format နဲ့ client ဘက်ကနေ တစ်ခါတည်း သယ်သွားပေးရပါတယ်။ JSON ကတော့ text format တစ်ခုဖြစ်ပြီး language independent လည်းဖြစ်လို့ default usage အနေနဲ့သုံးကြပါတယ်။ Put နဲ့ Patch Method ကတော့ data update လုပ်ဆောင်ပေးပါတယ်။ ပြင်ဆင်စရာရှိတဲ့ ရှိပြီးသား data resource မျိုးကို ကွက်ပြင်ပေးတာပေါ့။ Patch ကတော့ ခြွင်းချက်အနေနဲ့ ပြင်ဆင်မယ့် data ကိုတိကျစွာပို့ပေးရပါတယ်။ နောက်ဆုံးတစ်ခုဖြစ်တဲ့ Delete Method သည် server ပေါ်မှရှိပြီးသား data ကို ရှာဖွေ ဖျက်ပေးပါတယ်။ Method တွေပါလာတဲ့အခါ HTTP status code တွေကိုလည်း သိထားဖို့လိုပါလိမ့်မယ်။

The headers ကတော့ client နဲ့ server အတွက်လိုအပ်တဲ့ information တွေကိုထောက်ပြတဲ့နေရာမှာသုံးပါတယ်။ များသောအားဖြင့် API Authentication နဲ့ content type အတွက်သုံးကြပါတယ်။ ဥပမာအရ ကျွန်တော်က Facebook ထဲကို login မဝင်ထားရင် post တင်လို့ရမှာမဟုတ်သလို သူများ post တွေလည်းဖတ်လို့မရပါဘူး။ login ဝင်ထားမှသာ လိုချင်တဲ့ resource တွေကိုရမှာဖြစ်ပါတယ်။ login ဝင်ထားကြောင်းသက်သေကို headers ထဲမှာ ထည့်ပေးလို့ရပါတယ်။ အဲ့တော့ request ကိုကြည့်လိုက်လို့ သူ့ header ထဲမှာ authenticated ဖြစ်တဲ့သက်သေပါရင် ကန့်သတ်ထားတဲ့ data resource ကို server ဘက်ကထုတ်ပေးလိုက်တာပေါ့။

နောက်ဆုံးတစ်ခုဖြစ်တဲ့ The data (or body) ကတော့ client ဘက်ကနေ server ဆီကို ပို့ချင်တာတွေကို သူ့ထဲမှာ ထည့်ပေးလိုက်တာပါ။ Post Method သုံးထားတဲ့ request တစ်ခုမှာကတော့ သေချာတာ သိမ်းရမယ့် data ကို The data (or body) ထဲထည့်ပေးလိုက်တာမျိုးပါ။ အဲ့လိုပဲ Put, Patch နဲ့ Delete Method တွေရဲ့ request မှာလဲ data ထည့်ပေးဖို့လိုအပ်ပါတယ်။

အခုချိန်အထိ Rest API နဲ့ပတ်သက်တဲ့အကြောင်းတွေကိုတော်တော် ဆွေးနွေးလာခဲ့ပြီဖြစ်လို့ ကျွန်တော်တို့ နမူနာ API Testing ကို စပြီးစမ်းသပ်တာပေါ့။ Testing API Resources တွေအတွက် free စမ်းလို့ရတဲ့ website ကနေယူသွားမှာပါ။ အောက်ပါလင့်ခ်မှာကြည့်နိုင်ပါတယ်။

https://www.instantwebtools.net/
https://www.instantwebtools.net/fake-rest-api


သူ့မှာ develop လုပ်ပြီးသား resource တွေကို တွေ့ရမှာပါ။  ကျွန်တော်အစကပြောခဲ့သလို API တစ်ခုကို ကောင်းကောင်းအသုံးချနိုင်ဖို့ API Documentation လိုအပ်ပါတယ်။ ဒီ website မှာ API Resources တွေကို documentation အတိအကျနဲ့ပေးထားပါတယ်။ အဲ့အတိုင်း ကျွန်တော်တို့ follow လုပ်ပြီး စမ်းသပ်သွားပါမယ်။
အဲ့တော့ API Testing လုပ်လို့ ပိုအဆင်ပြေမယ့် environment တစ်ခုလိုအပ်ပါတယ်။ ဒီအတွက် Postman ဆိုတဲ့ application ကို အသုံးပြုသွားပါမယ်။ Postman ကိုရရှိပြီးရင်တော့ ကျွန်တော်တို့ ဆက်သွားလို့ရပါပြီ။

Documentation အရ Get Method request ဖြစ်တဲ့ https://api.instantwebtools.net/v1/airlines ကို postman မှာသုံးပြီး server ကို request လုပ်ကြည့်တဲ့အခါ ကျွန်တော်တို့တောင်းဆိုထားတဲ့ airlines data resource ကို server မှ JSON format နဲ့ response ပြန်လာတာကိုတွေ့ရမှာပါ။

နောက်တစ်ခုအနေနဲ့ client ကနေ data ထည့်လိုက်တဲ့ request တစ်ခုကိုစမ်းကြည့်ရအောင်။ ဒီတစ်ခါမှာ https://api.instantwebtools.net/v1/airlines ကိုပဲ Post Method အနေနဲ့ request လုပ်ကြည့်မယ်။ တစ်ခုသတိထားရမှာ application/type က JSON Format ဖြစ်ရပါမယ်။ The header မှာထည့်ရပါမယ်။ နောက်အရေးကြီးတာကို data request သည် documentation ကတောင်းဆိုတဲ့အတိုင်းဖြစ်ရပါမယ်။

success ဖြစ်ရင် Http status code 200 နဲ့အတူ response ပြန်လာတဲ့ data ကိုတွေ့ရမှာပါ။

ဒီ Blog မှာ ကျွန်တော်တို့ Rest API အကြောင်းကို အချိန်တစ်ခုအတွင်း သေချာလေး လေ့လာခဲ့ရပါတယ်။ အခုအစပျိုးခဲ့တာကို တခြား resource တွေကနေ ဆက်ပြီးလေ့လာစေချင်ပါတယ်။

အခု‌ရေးသားလိုက်တဲ့စာကြောင့် စာဖတ်သူ အကျိုးရှိခဲ့ရင် ကျွန်တော်‌ရေးသားရကျိုးနပ်ပါပြီ။

ကျေးဇူးတင်ပါတယ်။

Hello

Leave a Reply

Your email address will not be published. Required fields are marked *