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 *