เป็นไคลเอนต์ 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 ฯลฯ ให้แตกต่างกันในแต่ละคลาสได้ จึงนำไปใช้งานได้อย่างมีประโยชน์

ลองใช้งานกันดู และขอฟีดแบ็กกันมาเยอะ ๆ นะครับ!

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น