jin-frame: ไลบรารี HTTP request ที่นำกลับมาใช้ซ้ำได้ แบบประกาศได้ type-safe และขยายต่อได้
(github.com/imjuni)เป็นไคลเอนต์ HTTP request ที่ทำงานบนพื้นฐานของ axios สามารถกำหนด HTTP request เป็นคลาส TypeScript ได้
เมื่อทำงานจริง มักจะต้องจัดการ timeout, จำนวนครั้งในการ retry, วิธีการ retry ฯลฯ ให้แตกต่างกันไปตามแต่ละ endpoint หรืออาจมีความต้องการอย่างการเขียนแพตเทิร์นร่วมกัน เพิ่ม logging เมื่อเกิดความล้มเหลว และข้อกำหนดอื่น ๆ อีกหลากหลาย
เคยลองใช้ไคลเอนต์หลายแบบทั้ง axios, fetch, ky เป็นต้น แต่ดูเหมือนว่ายังไม่มีไคลเอนต์ที่ตอบโจทย์ความต้องการเหล่านี้ได้ค่อนข้างง่าย จึงได้พัฒนาตัวนี้ขึ้นมา
@Get({ host: 'https://pokeapi.co', path: '/api/v2/pokemon/:name' })
export class PokemonFrame extends JinFrame {
@Param()
declare public readonly name: string;
}
const frame = PokemonFrame.of({ name: 'pikachu' });
const reply = await frame.execute();
console.log(reply);
สามารถขยาย Hook ผ่านการสืบทอดได้ และยังจัดการ timeout, จำนวนครั้งในการ retry ฯลฯ ให้แตกต่างกันในแต่ละคลาสได้ จึงนำไปใช้งานได้อย่างมีประโยชน์
ลองใช้งานกันดู และขอฟีดแบ็กกันมาเยอะ ๆ นะครับ!
ยังไม่มีความคิดเห็น