An Overview of graphQL & REST
REST API / Graphql ဆိုတာဘာလဲ။ ဘယ်ဟာကိုရွေးချယ်သင့်လဲ။

REST API ဆိုတာဘာလဲ။
ဒါကတော့ တော်တော်များများရင်းနှီးနေကြပြီးသားဖြစ်တဲ့ ဘယ် endpoint ကနေသွားလိုက်ရင် ဘာဖြစ်မယ်ဆိုတာမျိုးကို လုပ်ဆောင်ပေးတဲ့ API အမျိုးအစားတစ်ခုဖြစ်ပါတယ်။ ဥပမာအားဖြင့် localhost:3000/products ကိုသွားရင် products တွေအကုန်ထုတ်ပြပေးတာမျိုး localhost:3000/products/1 ဆိုရင် id 1 နဲ့ သက်ဆိုင်တဲ့ product information အပြည့်အစုံကိုထုတ်ပေးတာမျိုး ၊ API endpoint တစ်ခုစီအတွက် မတူညီတဲ့ endpoint အများအပြားကို အသုံးပြုပြီး client နဲ့ server ကြား Http methods တွေဖြစ်တဲ့ CRUD ( CREATE, READ, UPDATE, DELETE) operation တွေ ပြုလုပ်ပေးတာဖြစ်ပါတယ်။
သူရဲ့ အားသာချက်တွေကတော့
ရိုးရှင်းတယ်။ url တစ်ခု endpoint တစ်ခုစီအတွက် အလုပ်တစ်ခုစီလုပ်ရတာမျိုးမို့ အခုမှ API အကြောင်းလေ့လာမဲ့သူတွေအတွက် လေ့လာရလွယ်ကူတယ်။
Default Caching System ပါဝင်ပြီး Stateless ဖြစ်တယ်။ အခုမှ API အကြောင်းလေ့လာမယ်ဆိုရင် REST ကို အရင်ဆုံးလေ့လာသင့်တယ်။
အားနည်းချက်တွေကတော့
အလုပ်တစ်ခုအတွက် Endpoint တစ်ခု သက်မှတ်ပေးရတာမျိုးမို့ အလုပ်များရင် Endpoint တွေများတယ်။
နောက်တစ်ခုကတော့ over fetching နဲ့ under fetching ပြဿနာရှိတယ်။ တစ်ခါထဲနဲ့ data တွေက လိုတာတွေပါမလာတာ နဲ့ မလိုတာတွေပါလာတာမျိုးကို ဆိုလိုတာပါ။ ဒီပြဿနာကြောင့်ပဲ Graphql ဆိုတာကြီးက ထွက်ပေါ်လာတာဖြစ်ပါတယ်။
Graphql ဆိုတာဘာလဲ။
Graphql ဆိုတာ API တွေအတွက် query language တစ်ခုဖြစ်ပြီး Facebook ကနေ 2012 မှာ Developed ပြုလုပ်ကာ 2015 မှာတော့ open-source ချပေးခဲ့တာဖြစ်ပါတယ်။ Graphql ရဲ့ အားသာချက်ကတော့ ကျွန်တော်တို့ သာမန်မြင်ဖူးနေကျ REST API တွေ လိုမျိုးမဟုတ်ဘဲ လိုအပ်တဲ့ data အတိအကျကို type system ကို အသုံးပြုထားတဲ့ Query တွေ အသုံးပြုပြီး ရယူနိုင်တာဖြစ်ပါတယ်။
သူရဲ့အဓိက လုပ်ဆောင်ချက်တွေကတော့
client ကနေ လိုအပ်တဲ့ data အတိအကျကို request ပြုလုပ်နိုင်တာဖြစ်တဲ့အတွက် client ကနေ မလိုအပ်တဲ့ data တွေအများကြီးပါလာတဲ့ over fetching ဒါမှမဟုတ် လိုအပ်တဲ့ data အကုန် တစ်ခါထဲ မပါလာတာမျိုးကို ခေါ်တဲ့ under fetching လိုမျိုး ပြဿနာတွေ မရှိတော့ပါဘူး။
single endpoint ဖြစ်တဲ့ဖြစ်တဲ့အတွက် REST API တွေမျိုး endpoint ပေါင်းစုံနဲ့ အလုပ်ရှုပ်နေတာမျိုး ကင်းဝေးသွားမှာပါ။
real-time data update ရရှိတာမို့ REST API လိုမျိုး Socket တွေမလိုတော့ပါဘူး။
အကောင်းတွေကြီးပဲပြောနေတာဆိုတော့ အားနည်းချက်လေးတွေကိုလဲ မေ့ထားလို့မရပါဘူး။
လေ့လာခါစအတွက် query တွေက complex ဖြစ်တယ်။ ရှုပ်ထွေးတယ်။R
EST API တွေလိုမျိုး default မှာ caching system မပါဝင်ပါဘူး။
ဘာကိုရွေးသင့်လဲဆိုတာကတော့ ကိုယ့်ရဲ့လိုအပ်ချက်ပေါ်ပဲ မူတည်ပါတယ်။
ကိုယ်က caching မလိုဘူး under/over fetching လို ပြဿနာတွေလဲ မကြုံချင်ဘူး။ real-time update ကိုလဲ လိုချင်တယ်ဆိုရင် Graphql သုံးသင့်ပါတယ်။
အာ့လိုမဟုတ်ဘူး။ caching လဲလိုတယ်။ real-time update ကိုလဲမလိုအပ်ဘူး။ scale လဲကြီးမယ်ဆိုရင်တော့ REST API ကို သုံးသင့်ပါတယ်။