# Show GN: jin-frame: A reusable, declarative, type-safe, and extendable HTTP request library.

> Clean Markdown view of GeekNews topic #22665. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=22665](https://news.hada.io/topic?id=22665)
- GeekNews Markdown: [https://news.hada.io/topic/22665.md](https://news.hada.io/topic/22665.md)
- Type: show
- Author: [imjuni](https://news.hada.io/@imjuni)
- Published: 2025-08-22T20:13:58+09:00
- Updated: 2025-08-22T20:13:58+09:00
- Original source: [github.com/imjuni](https://github.com/imjuni/jin-frame)
- Points: 2
- Comments: 0

## Topic Body

axios기반 HTTP request client 입니다. HTTP request를 TypeScript 클래스로 정의할 수 있습니다.  
  
실무를 하다보면 endpoint 별로 timeout, 재시도 횟수, 재시도 방식 등을 다르게 관리해야 하거나 공통의 패턴을 작성, 실패 한 경우 로깅 추가 등 여러가지 요구사항을 받게 됩니다.  
  
axios, fetch, ky 등 다양한 클라이언트를 사용해봤지만 이런 요구사항을 비교적 쉽게 충족할 수 있는 클라이언트는 없는 것 같아서 개발하게 되었습니다.  
  
```ts  
@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, 재시도 횟수 등을 클래스 별로 다르게 관리할 수 있어서 유용하게 사용할 수 있습니다.  
  
사용해보시고, 많은 피드백 부탁드립니다!

## Comments



_No public comments on this page._
