AI Briefing

변화에 유연한 HTTP 클라이언트 만들기

·2023.07.23 22:00

외부 라이브러리 의존성을 최소화하고 테스트 용이성을 높인 Nest.js용 WebClientModule 설계 경험을 공유한다.

Nest.js의 기본 HTTP ModuleObservable을 반환하여 일회성 요청에 불편함을 주고, AxiosResponse를 직접 반환하여 특정 라이브러리에 대한 의존성을 높인다는 단점이 있다. 이는 라이브러리 교체 시 서비스 코드 전체를 수정해야 하는 OCP(개방 폐쇄 원칙) 위반 문제를 야기한다.

이를 해결하기 위해 내부 구현을 감추고 핵심 인터페이스만 노출하는 WebClientModule을 직접 설계하여 사용하고 있다. 이 모듈은 다음과 같은 핵심 구성요소로 이루어진다.

  • WebClient: Builder 패턴을 적용하여 HTTP 메서드 설정 및 요청을 수행하는 인터페이스
  • BodyInserter: Content-Type에 따라 JSON, Form Data, Text 등 다양한 형태의 Body 생성을 지원하는 클래스
  • ResponseSpec: HTTP 상태 코드와 응답 바디를 제공하며, 응답을 특정 클래스 인스턴스로 변환하는 toEntity 메서드를 포함하는 클래스

이러한 구조를 통해 외부 라이브러리의 변화에 유연하게 대응하면서도, 비즈니스 로직이 외부 도구의 스펙에 종속되지 않도록 설계할 수 있다.

이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.

요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.