Mar 17, 2017

API ဆိုတာဘာလဲ။

Ko Sagaing
API ဆိုတာ Application Program Interface ဖြစ်ပါတယ်။  Application တစ်ခုနှင့်တစ်ခု ချိတ်ဆက်ပြီး လိုအပ်တဲ့လုပ်ငန်းတွေ ဆောင်ရွက်နိုင်ရန် ဖန်တီးထားတဲ့ ကြားခံ Application တစ်ခုဖြစ်ပါတယ်။  Application တစ်ခုနှင် အခြား Application တစ်ခုတို့ရဲ့ Interface လည်းဖြစ်ပါတယ်။  API မှာ Command (သို့) Function တွေစုစည်းဖန်တီးထားပြီး ၄င်းတို့ကို Request လုပ်တဲ့အခါမှာ သက်ဆိုင်ရာ Response တစ်ခုခုကိုပြန်လည်ပေးပို့တယ်။  API တွေဟာ Cloud Service တွေထဲက (SaaS - Software as a Service နှင့်ဆင်တူတယ်။  Cloud Service တွေအကြောင်းကိုဖတ်ချင်ရင် ကျွန်တော် ဒီနေရာမှာ ရေးသားထားပါတယ်။  API ဆိုတာကို အခုနောက်ပိုင်းမှာ Web နည်းပညာတွေနှင့်အတူတွဲပြီး အမြဲလိုလို ကြားဖူးနေကြပေမယ့် တကယ်တော့ API ဟာ Windows နှင့်အခြား Platform တွေမှာလည်း ရှိပါတယ်။  ဥပမာ MS Windows ထဲက API တွေကို Windows API Index မှာတွေ့နိုင်ပါတယ်။  Windows Application တွေကို VB, C#, Java စသည့် Programming Languages တွေနှင့် ရေးသားဖန်တီးတဲ့အခါမှာ Windows ရဲ့ တစ်ချို့လုပ်ဆောင်ချက်တွေကို မိမိရဲ့ Application ထဲမှာထည့်သွင်း အသုံးပြုချင်တယ်ဆိုရင် Windows API တွေကိုသုံးနိုင်ပါတယ်။  မည်သည့် API ပဲဖြစ်ဖြစ် မိမိရဲ့ Application ထဲမှာထည့်သွင်း အသုံးပြုခြင်းဖြင့် သီးသန့်အစအဆုံးဖန်တီးစရာမလိုပဲ လိုအပ်တာကိုလုပ်ဆောင်နိုင်တာဟာ API တွေရဲ့ အားသာချက်တစ်ခုဖြစ်ပါတယ်။
ဒီပုံကတော့ API တစ်ခုရဲ့ အခြေခံအလုပ်လုပ်ပုံဖြစ်ပါတယ်။  Application 2 ကနေ Application 1 ကို API မှတဆင့် Request တစ်ခုလုပ်တယ်၊ Application 2 ရဲ့ Request ကို Application 1 ရတဲ့အချိန်မှာ သက်ဆိုင်ရာ Response တစ်ခုကို Application 1 က ပြန်လည်ပေးပို့နေတဲ့ ပုံဖြစ်ပါတယ်။

Web Service ဆိုတာဘာလဲ။
Web Service ဆိုတာ API အမျိုးအစားတစ်ခုဖြစ်ပြီး၊ Network (သို့) Internet ထဲက မတူညီတဲ့ Platform တွေပေါ်မှာရှိတဲ့ Application တွေတစ်ခုနှင့်တစ်ခု အပြန်အလှန်ဆက်သွယ်၊ ဆောင်ရွက်နိုင်အောင် ဖန်တီးထားတဲ့ နည်းပညာဖြစ်ပါတယ်။  အဲ့လို ဆက်သွယ်ဆောင်ရွက်တဲ့အခါမှာ Transport Protocol တစ်ခုဖြစ်တဲ့ HTTP ကိုအဓိက အသုံးပြုပါတယ်။ အခြား SMTP, FTP စသည် Protocol တွေလည်း အသုံးပြုကြပါတယ်။ အချက်အလက်တွေ အပြန်အလှန်ပေးပို့တဲ့နေရာမှာ အဓိကအသုံးများတဲ့ Message Protocol တွေကတော့ SOAP နှင့် REST ပဲဖြစ်ပါတယ်။  REST ကို RESTful လို့လည်းခေါ်ကြတယ်။  Wiki ထဲမှတော့ REST ကို Protocol တစ်ခုလို့ ဒီနေရာမှာ ပြောထားတယ်။  သို့သော် REST ဟာ HTTP ကိုအခြေခံပြီး API တွေရေးတဲ့အခါမှာအသုံးပြုတဲ့ Application Architecture တစ်ခုလို့ပြောရင် ပိုမှန်ပါလိမ့်မယ်။  Web Service တွေရဲ့ အခြေခံအားဖြင့် အလုပ်လုပ်ပုံကတော့ Transport Protocol တစ်ခုပေါ်မှာ Message တွေကို Request နှင့် Response လုပ်တာပဲဖြစ်တယ်။

SOAP ဆိုတာဘာလဲ။
SOAP ဆိုတာ XML ကိုအခြေခံတဲ့ Simple Object Access Protocol ဖြစ်ပါတယ်။  SOAP ဆိုတဲ့ Standard နှင့် SOAP အတွက်သတ်မှတ်ချက်တွေကို ဖန်တီးခဲ့တာကတော့ W3C အဖွဲ့ကြီးပဲဖြစ်ပါတယ်။  SOAP ကို HTTP, SMTP နှင့် FTP စသည့် Transport Protocol တွေပေါ်မှာ ဖန်တီးနိုင်ပါတယ်။  SOAP Message တစ်ခုကို Envelope လို့ခေါ်ပါတယ်။  Envelope တစ်ခုမှာ Header နှင့် Body ဆိုတာရှိတယ်၊  Header ပိုင်းမှာ Message အတွက်လိုအပ်တဲ့ လုံခြုံရေးပိုင်းဆိုင်ရာတွေဖြစ်တဲ့ ဥပမာ (Authentication, Encoding စသည်ဖြင့်) ပါဝင်ပြီး Body ပိုင်းမှာတော့ Response လုပ်မယ့် Message ပါဝင်တယ်။  Body က Message တွေကို WSDL - Web Service Definition Language လို့ခေါ်တဲ့ XML ပုံစံကဲ့သို့ရိုးရှင်းသော Language ကိုအသုံးပြုပြီး ဖန်တီးထားတာဖြစ်တယ်။  Body ထဲမှာ နောက်ထပ်ပါဝင်နိုင်တာက Fault ဖြစ်ပါတယ်။  Fault ကတော့ Error (သို့) Response Message နှင့်သက်ဆိုင်တဲ့ အချက်အလက်တွေပါဝင်တယ်။  Fault ကတော့လိုအပ်မှ ထည့်သွင်းအသုံးပြုရတဲ့အပိုင်းဖြစ်တယ်။  SOAP နှင့်ဆင်တူတဲ့ XML-RPC (Remote Procedure Call) ဆိုတဲ့ Web Service အမျိုးအစားလည်းရှိပါတယ်။  အခြားသော Web Service Protocol တွေကို ဒီနေရာမှာ လေ့လာနိုင်ပါတယ်။

အောက်မှာဖော်ပြထားတဲ့ SOAP Request Message နမူနာက W3C.ORG မှဖြစ်ပါတယ်။

POST /StockQuote HTTP/1.1
Host: www.stockquoteserver.com
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "Some-URI"

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Body>
        <m:GetLastTradePrice xmlns:m="Some-URI">
            <m:tickerSymbol>DIS</m:tickerSymbol>
        </m:GetLastTradePrice>
    </soapenv:Body>
</soapenv:Envelope>

အောက်မှာဖော်ပြထားတဲ့ SOAP Response Message နမူနာက W3C.ORG မှဖြစ်ပါတယ်။

HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Body>
        <m:GetLastTradePriceResponse xmlns:m="Some-URI">
            <m:price>34.5</m:price>
        </m:GetLastTradePriceResponse>
    </soapenv:Body>
</soapenv:Envelope>
နမူနာ SOAP Message တွေနှင့် အထက်ပါပုံကိုတွဲပြီး ကြည့်မယ်ဆိုရင် DIS (Walt Disney Company) ရဲ့ နောက်ဆုံး အရောင်းအဝယ်ဖြစ်ခဲ့တဲ့ Stock စျေးနှုံးကို SOAP Sender က SOAP Receiver ဆီကို Request လုပ်လိုက်တယ်။  SOAP Receiver ကနေ နောက်ဆုံးစျေးနှုံးကို SOAP Sender ဆီကို Response ပြန်လည်ပေးပို့လိုက်တာပဲဖြစ်တယ်။

REST ဆိုတာဘာလဲ။
REST ဆိုတာ REpresentational State Transfer ဖြစ်ပါတယ်။  Server မှာရှိတဲ့ Resource တွေကို Client တွေ Request လုပ်ခဲ့ရင်၊ Request နှင့်သက်ဆိုင်တဲ့ Response တစ်ခုကို ပြန်လည်ပေးပို့တဲ့ အလုပ်ကိုလုပ်ဆောင်တယ်။ Resource ဆိုတာ Message တစ်ခုဖြစ်နိုင်သလို၊ Image တစ်ခုလည်း ဖြစ်နိုင်တယ်။  REST ရဲ့ အလုပ်လုပ်ပုံက Client နှင့် Server ပုံစံမျိုးဖြစ်တယ်။  REST ဆိုတဲ့နည်းပညာကို Roy Fielding ရဲ့ PhD Thesis ကနေ ၂၀၀၀ ခုနှစ်မှာ စတင်ပေါ်ပေါက်လာခဲ့ပြီး၊ အခုနောက်ပိုင်းမှာ တဖြည်းဖြည်းနှင့် ပေါ်ပြူလာဖြစ်လာတဲ့ နည်းပညာတစ်ခုဖြစ်တယ်။  REST API ကို HTTP ပေါ်မှာ ရိုးရှင်းစွာ Request နှင့် Response ကိုလုပ်ဆောင်နိုင်ပါတယ်။  REST API တစ်ခုကိုအသုံးပြုဖို့၊ မည်သည့် Deployment မှမလုပ်ပဲနှင့်လည်း Browser ကနေလည်း Server ဆီကို Request လုပ်နိုင်ပါတယ်။  Request လုပ်တဲ့အခါမှာလည်း Client နှင့်သက်ဆိုင်တဲ့ Cookies Data နှင့် အခြား State တွေ (ဥပမာ Session Context) ကို Server ထဲမှာသိမ်းဆည်းမှု မလုပ်နိုင်ပါဘူး။  အဲလိုမလုပ်နိုင်တဲ့ အခြေအနေကို Stateless လို့ခေါ်ပါတယ်။ နောက်ပြီး REST မှာရှိတဲ့ Request တစ်ခုစီတိုင်းဟာ Resource တစ်ခုစီကို ရည်ညွှန်းတယ်။ REST ရဲ့ Request တွေဟာ URL တွေနှင့်သတ်မှတ်ထားတာဖြစ်တယ်။

အောက်မှာဖော်ပြထားတဲ့ REST Request နမူနာက Open Weather Map ကဖြစ်ပါတယ်။
http://samples.openweathermap.org/data/2.5/weather?q=London,uk&appid=b1b15e88fa797225412429c1c50c122a1

အောက်မှာဖော်ပြထားတဲ့ REST Response နမူနာက Open Weather Map ကဖြစ်ပါတယ်။ 
{"coord":{"lon":-0.13,"lat":51.51},"weather":[{"id":300,"main":"Drizzle","description":"light intensity drizzle","icon":"09d"}],"base":"stations","main":{"temp":280.32,"pressure":1012,"humidity":81,"temp_min":279.15,"temp_max":281.15},"visibility":10000,"wind":{"speed":4.1,"deg":80},"clouds":{"all":90},"dt":1485789600,"sys":{"type":1,"id":5091,"message":0.0103,"country":"GB","sunrise":1485762037,"sunset":1485794875},"id":2643743,"name":"London","cod":200}
Request မှာကြည့်လိုက်ရင် ပုံမှန် URL ကဲ့သို့ပဲဖြစ်ပေမယ့် URL နောက်မှာ API Version (2.5)၊ weather (ဒီနေရာထိကို Service Endpoint လို့ခေါ်ပါတယ်။)၊ q=London,uk (ရှာဖွေချင်တဲ့ နိုင်ငံ၊ မြို့အမည်) နှင့် appid (ယာသီအသုံးပြုဖို့ id) စသည့်အချက်အလက်တွေပါတယ်။  ဒီအချက်အလက်ပုံစံကို Query String လို့ခေါ်ပါတယ်။ Response မှာကတော့ JSON Data တွေဖြစ်ပါတယ်။ Response မှာ XML အမျိုးအစားလည်း Response လုပ်နိုင်ပါတယ်။  အခုနမူနာက JSON Data တွေကို Programmer တွေရဲ့ Application ထဲမှာပြန်သုံးတဲ့အခါမှာ Serialization လုပ်ပြီးတော့ အသုံးပြုကြပါတယ်။  Serialization နှင့် Deserialization အကြောင်းကို ဖတ်ချင်ရင် ဒီနေရာမှာ ကျွန်တော်ရေးသားထားပါတယ်။  REST API တွေအလုပ်လုပ်ပုံကို လေ့လာကြည့်ချင်ရင် Fake API ဆိုတဲ့ Website မှာလေ့လာနိုင်ပါတယ်။  REST API ဆိုတာ ဘယ်လိုမျိုးလည်းဆိုတာ စမ်းသပ်ဖို့ရန် ဖန်တီးထားတဲ့ Website ဖြစ်ပါတယ်။  SOAP ထက် ဖန်တီးတည်ဆောက်ရတာလွယ်ပြီး၊ ရိုးရှင်းစွာ အသုံးပြုနိုင်တာကြောင့် REST နှင့် API တွေ တော်တော်များများကို အင်တာနက်ထဲမှာ တွေ့နိုင်ပါတယ်။

API တွေအများကြီးကို တစ်နေရာတည်းမှာ စုစည်းထားတဲ့ Any API ဆိုတဲ့ Website ထဲမှာ API တွေကိုဝင်ရောက် လေ့လာနိုင်ပါတယ်။  အဲ့ဒီ Website ထဲမှာ API တွေတစ်ခုချင်းစီ ဘယ်လိုအသုံးပြုရမလဲဆိုတဲ့ Documentation တွေလည်းပါဝင်ပါတယ်။  အခြား API တွေလည်း အင်တာနက်ထဲမှာ အများကြီး ရှိနိုင်ပါသေးတယ်။

မှတ်စုရေးသူအကြောင်း

Ko Sagaing / Software Engineer

နာမည်အရင်းမှာ လှိုင်မင်းထက်ဖြစ်ပြီး၊ ကိုစစ်ကိုင်းဆိုသည့် နာမည်ပြောင်နှင့် မိတ်ဆွေ၊ သူငယ်ချင်းများက ရင်းနှီးစွာခေါ်ကြပါသည်။ ယခင်ကမြန်မာနိုင်ငံတွင် သင်ကြားရေး နှင့် Software Development လုပ်ငန်းများတွင် ဝင်ရောက်လုပ်ကိုင်ခဲ့ပြီး၊ ယခုလက်ရှိမှာ စင်ကာပူနိုင်ငံရှိ နည်းပညာကုမ္ပဏီတစ်ခုတွင် ဝင်ရောက်လုပ်ကိုင်နေပါသည်။

0 ခုမှတ်ချက်ပေးထားတယ်။:

Post a Comment

ကိုစစ်ကိုင်း၏ မှတ်စုများ. Powered by Blogger.