Axios는 JavaScript에서 많이 사용되는 Promise 기반의 HTTP 클라이언트 라이브러리입니다. 이 라이브러리는 브라우저 및 Node.js 환경에서 HTTP 요청을 보내고 응답을 처리하는 기능을 제공합니다.
Axios는 다양한 기능을 갖춘 사용자 친화적인 API를 제공하여 HTTP 요청을 쉽게 생성하고 조작할 수 있습니다. 이 라이브러리는 다음과 같은 기능을 포함하고 있습니다:
간편한 HTTP 요청 처리: Axios는 axios.get()
, axios.post()
, axios.put()
등과 같은 메소드를 제공하여 간단하게 GET, POST, PUT, DELETE 등의 HTTP 요청을 생성할 수 있습니다. 또한, 다양한 옵션 (헤더, 매개변수, 요청 본문 등)을 설정할 수 있습니다.
Promise 기반: Axios는 Promise 기반의 API를 사용하여 비동기적으로 HTTP 요청을 처리합니다. 이를 통해 비동기 코드를 더욱 깔끔하게 작성하고, async/await
문법과 함께 사용할 수 있습니다.
요청과 응답의 가공 및 변환: Axios는 요청과 응답 데이터를 가공하고 변환할 수 있는 기능을 제공합니다. 예를 들어, JSON 데이터를 자동으로 직렬화하거나, 응답 데이터를 자동으로 파싱하여 사용할 수 있습니다.
요청/응답 인터셉터: Axios는 요청과 응답을 가로채는 인터셉터(interceptor)를 사용할 수 있습니다. 이를 활용하여 요청 전에 헤더를 수정하거나, 응답을 가공하거나, 에러를 처리할 수 있습니다.
브라우저 및 Node.js 환경 지원: Axios는 브라우저 환경과 Node.js 환경 모두에서 사용할 수 있습니다. 브라우저에서는 XMLHttpRequest 또는 Fetch API를 사용하고, Node.js에서는 HTTP 모듈을 사용하여 HTTP 요청을 처리합니다.
Axios는 많은 개발자들에게 인기가 있으며, 널리 사용되는 라이브러리입니다. 이는 간단한 API와 다양한 기능을 갖춘 유연성으로 인해 HTTP 요청을 처리하기 위한 편리하고 강력한 선택지로 알려져 있습니다.
@nestjs/axios
는 NestJS 프레임워크에서 HTTP 클라이언트 요청을 보낼 때 사용되는 패키지입니다. 이 패키지는 Axios 라이브러리를 NestJS에 통합하여 사용하기 쉽고 강력한 HTTP 요청 기능을 제공합니다.
NestJS는 Node.js 기반의 서버 사이드 애플리케이션을 구축하기 위한 프레임워크이며, HTTP 클라이언트 요청은 서버 사이드 애플리케이션과 외부 서비스 또는 API와의 상호작용에 중요한 역할을 합니다. @nestjs/axios
는 NestJS 애플리케이션에서 이러한 상호작용을 처리하기 위해 사용됩니다.
아래는 @nestjs/axios
패키지의 사용 예시입니다:
import { Injectable } from '@nestjs/common';
import { AxiosInstance } from '@nestjs/axios';
@Injectable()
export class MyService {
constructor(private readonly axios: AxiosInstance) {}
async fetchData() {
const response = await this.axios.get('https://api.example.com/data');
return response.data;
}
}
위의 예시에서 MyService
클래스는 NestJS의 서비스로 정의되었습니다. AxiosInstance
는 @nestjs/axios
에서 제공되는 Axios의 인스턴스를 나타내는 인터페이스입니다. private readonly axios: AxiosInstance
를 통해 AxiosInstance
인스턴스를 주입하여 사용할 수 있습니다.
fetchData()
메소드에서는 this.axios.get()
을 사용하여 외부 API인 https://api.example.com/data
로 GET 요청을 보내고, 그에 대한 응답을 받습니다. 응답은 response.data
로 접근하여 반환됩니다.
@nestjs/axios
를 사용하는 이유는 다음과 같습니다:
편리한 HTTP 요청 처리: @nestjs/axios
는 Axios 라이브러리를 NestJS와 통합하여 HTTP 요청을 보내고 응답을 처리하는 작업을 간단하게 만듭니다. Axios는 많은 기능을 제공하며, @nestjs/axios
는 이러한 기능을 활용할 수 있도록 편의성을 제공합니다.
의존성 주입(Dependency Injection): NestJS의 의존성 주입(DI) 기능을 활용하여 AxiosInstance
를 주입받을 수 있습니다. 이를 통해 테스트 가능한 코드를 작성하고 의존성 관리를 용이하게 할 수 있습니다.
NestJS와의 통합: @nestjs/axios
는 NestJS에서 공식적으로 지원하는 패키지로, NestJS 애플리케이션과의 통합이 원활합니다. NestJS의 기능과 함께 사용할 수 있으며, 인터셉터, 미들웨어, 예외 필터 등의 기능을 활용하여 HTTP 요청을 관리할 수 있습니다.
따라서, @nestjs/axios
는 NestJS 애플리케이션에서 외부 서비스와의 HTTP 요청을 편리하게 처리하고 의존성 주입과 통합을 강화하는 데 사용됩니다.