Show GN: jin-frame: A reusable, declarative, type-safe, and extendable HTTP request library.
(github.com/imjuni)axios기반 HTTP request client 입니다. HTTP request를 TypeScript 클래스로 정의할 수 있습니다.
실무를 하다보면 endpoint 별로 timeout, 재시도 횟수, 재시도 방식 등을 다르게 관리해야 하거나 공통의 패턴을 작성, 실패 한 경우 로깅 추가 등 여러가지 요구사항을 받게 됩니다.
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, 재시도 횟수 등을 클래스 별로 다르게 관리할 수 있어서 유용하게 사용할 수 있습니다.
사용해보시고, 많은 피드백 부탁드립니다!