ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်
Part 2 အထိ CRUD အားလုံး အလုပ်လုပ်ပေမယ့် Network error, 401 Unauthorized, 429 Too Many Requests စတာတွေ ဖြစ်လာရင် program က crash ဖြစ်သွားနိုင်ပါတယ်။ ဒီ Part မှာ Errors သင်ခန်းစာက error response body ကို parse လုပ်နည်း၊ Rate Limit သင်ခန်းစာက 429 status ကို ဘယ်လို handle လုပ်ရမလဲဆိုတာကို ပေါင်းစပ်ကာ request() ဆိုတဲ့ shared wrapper function တစ်ခု ရေးပါမယ်။ အားလုံးသော API call တွေကို ဒီ wrapper ကနေပဲ ဖြတ်သွားစေပြီး error handling logic ကို တစ်နေရာတည်းမှာ စုစည်းထားပါမယ်။ နောက်ဆုံးမှာ Versioning သင်ခန်းစာအတိုင်း Accept-Version header ကိုပါ ထည့်ပေးပြီး project ကို ပြီးပြည့်စုံအောင် README.md နဲ့ command list ကို မှတ်တမ်းတင်ကြပါမယ်။
လက်တွေ့ ဆောက်ကြည့်မယ်
request(method, path, body) ဆိုတဲ့ helper function ရေးပြီး fetch, error check, JSON parse logic တွေ အားလုံးကို ဒီထဲမှာ စုထားပါ။ Status 429 ဖြစ်ရင် Retry-After header (သို့) fixed delay နဲ့ maximum 3 ကြိမ်အထိ retry လုပ်တဲ့ exponential backoff logic ထည့်ပါ။ 4xx/5xx error တွေအတွက် response body ထဲက error.message ကို ထုတ်ပြီး user-friendly စာသားအနေနဲ့ console.error ထုတ်ပါ။ createUser/getUsers/updateUser/deleteUser အားလုံးကို request() wrapper ကို ခေါ်သုံးအောင် refactor လုပ်ပြီး၊ နောက်ဆုံးမှာ README.md ထဲ command list နဲ့ setup steps ကို ရေးသားပြီး project ပြီးပြည့်စုံအောင် ပြင်ဆင်ပါ။
Code နမူနာ
async function request(method, path, body, attempt = 1) {
const res = await fetch(`${API_BASE_URL}${path}`, {
method,
headers: {
Authorization: `Bearer ${API_TOKEN}`,
'Content-Type': 'application/json',
'Accept-Version': 'v1',
},
body: body ? JSON.stringify(body) : undefined,
});
if (res.status === 429 && attempt <= 3) {
const delay = attempt * 1000; // exponential-ish backoff
console.warn(`Rate limited, retrying in ${delay}ms...`);
await new Promise((r) => setTimeout(r, delay));
return request(method, path, body, attempt + 1);
}
const data = await res.json().catch(() => ({}));
if (!res.ok) {
throw new Error(data.error?.message || `Request failed: ${res.status}`);
}
return data;
}Rate limit (429) ဖြစ်ရင် CLI က crash မဖြစ်ဘဲ retry message ပြသပြီး automatic ပြန်ကြိုးစားကာ 401/404 ကဲ့သို့ error တွေမှာလည်း readable message ပြပေးပါလိမ့်မယ်။၅ မိနစ် စမ်းကြည့်
5 မိနစ်အတွင်း API_TOKEN ကို တမင် မှားသတ်မှတ်ပြီး request() ကို run ကြည့်ကာ error message က user-friendly ဖြစ်မဖြစ် စစ်ဆေးပါ။
သတိလေးတစ်ချက်
Retry logic ကို aggressive လွန်းအောင် delay မထားဘဲ run ရင် rate limit ကို ပိုဆိုးအောင် ဖြစ်စေနိုင်တဲ့အတွက် Rate Limit သင်ခန်းစာက guideline အတိုင်း backoff delay ကို လေးစားပါ။