ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်
ဒီ Practice Set က Practice Set 1 ထက် တစ်ဆင့်တက်ပြီး Create/Read/Update/Delete, Pagination query params, Error/Rate-limit handling တွေကို တစ်ခါတည်း ပေါင်းသုံးဖို့ ရည်ရွယ်ပါတယ်။ Real project မှာ request တစ်ခုချင်းစီက အမှားမဖြစ်ဘူးလို့ သေချာနိုင်တာမဟုတ်တဲ့အတွက် success flow တစ်ခုတည်းမက error flow ကိုပါ တွက်ချက်တတ်ဖို့ အလေ့အကျင့်ရအောင် ဒီ task 4 ခုကို ပြင်ဆင်ထားပါတယ်။ Task တစ်ခုစီကို ပြီးအောင်ရေးပြီးရင် အောက်ခြေမှာ ရေးထားတဲ့ Common Mistakes တွေနဲ့ ကိုယ့် code ကို နှိုင်းယှဉ်ကြည့်ပါ။
လေ့ကျင့်ခန်းများ
Task 1: user 3 ယောက်ကို loop နဲ့ POST create လုပ်ပြီးရင် GET /v1/users?page=1&limit=2 နဲ့ page=2&limit=2 ကို ခေါ်ကာ user 3 ယောက်စလုံး page နှစ်ခုကွဲပြီး ပြန်ရလားစစ်ဆေးပါ။ Task 2: create ထားတဲ့ user တစ်ယောက်ရဲ့ email ကို PUT request နဲ့ update လုပ်ပြီး ပြန် GET ခေါ်ကာ ပြောင်းသွားမှန်း verify လုပ်ပါ။ Task 3: user တစ်ယောက်ကို DELETE လုပ်ပြီးရင် အဲဒီ id နဲ့ ထပ်GET ခေါ်ကြည့်ကာ status 404 ပြန်ရမှန်း confirm လုပ်ပါ။ Task 4: token ကို တမင်မှားထားပြီး request ပို့ကာ 401 error ကို catch လုပ်ကာ "Token မှားနေပါတယ်၊ ပြန်စစ်ဆေးပါ" ဆိုတဲ့ user-friendly message ထုတ်တဲ့ error handler ရေးပါ။
Code နမူနာ
// Task 1 skeleton
async function createThreeUsers() {
const users = [
{ name: 'A', email: 'a@example.com' },
{ name: 'B', email: 'b@example.com' },
{ name: 'C', email: 'c@example.com' },
];
for (const u of users) {
await createUser(u.name, u.email); // Part 2 ရဲ့ function ကို ပြန်သုံးနိုင်ပါတယ်
}
}
// Task 4 skeleton
async function testInvalidToken() {
try {
const res = await fetch('https://api.example.com/v1/users', {
headers: { Authorization: 'Bearer WRONG_TOKEN' },
});
if (res.status === 401) {
throw new Error('UNAUTHORIZED');
}
} catch (err) {
console.error('Token မှားနေပါတယ်၊ ပြန်စစ်ဆေးပါ');
}
}Task 1-3 က pagination, update, delete flow အသီးသီး မှန်ကန်စွာ အလုပ်လုပ်မှန်း console output ကနေ confirm ရမှာဖြစ်ပြီး Task 4 က friendly error message တစ်ကြောင်း ထွက်လာပါလိမ့်မယ်။၅ မိနစ် စမ်းကြည့်
5 မိနစ်အတွင်း Task 1 ကို run ပြီး page=1 limit=2 ရလဒ်ထဲမှာ user ဘယ်နှစ်ယောက်ပါလာလဲ manually ရေတွက်ကြည့်ပါ။
သတိလေးတစ်ချက်
Loop ထဲမှာ create request များစွာကို connection တစ်ခါတည်း parallel ပို့ရင် rate limit ကို လျင်မြန်စွာ ထိနိုင်တဲ့အတွက် Task 1 ကို sequential (await တစ်ခုပြီးမှ နောက်တစ်ခု) လုပ်ဆောင်ပါ။