Apidog

올인원 협업 API 개발 플랫폼

API 설계

API 문서

API 디버깅

API 모킹

API 자동화 테스트

패스트파이로 시작하기: 간단한 API 구축하기

Fastify는 Node.js용 웹 프레임워크로, 웹 애플리케이션 및 API 구축을 위한 고성능 저오버헤드 솔루션을 제공하는 데 중점을 둡니다.

Young-jae

Young-jae

Updated on December 20, 2024

소개;

Fastify는 웹 애플리케이션과 API를 구축하기 위한 고성능 및 저오버헤드 솔루션을 제공하는 Node.js용 웹 프레임워크입니다. 사용하기 간단하면서도 다양한 사용 사례에 적합하도록 설계된 강력한 기능을 제공하는 것을 목표로 합니다. Fastify는 인상적인 속도 벤치마크를 자랑하며, 높은 부하를 효율적으로 처리하는 능력으로 잘 알려져 있습니다.

Fastify의 장점:

  • 성능: Fastify는 속도에 중점을 두고 구축되어 Node.js에 사용할 수 있는 가장 빠른 웹 프레임워크 중 하나입니다. 낮은 오버헤드와 효율적인 아키텍처는 응답 시간 단축 및 전반적인 성능 향상에 기여합니다.
  • 스키마 기반 검증: Fastify는 요청 및 응답 페이로드에 대한 스키마 기반 검증을 위한 기본 지원을 제공합니다. 이를 통해 개발자는 들어오는 데이터에 대한 명확한 기대를 정의하여 신뢰성과 보안을 개선할 수 있습니다.
  • 확장성: Fastify는 높은 확장성을 가지고 있어 개발자가 애플리케이션의 기능을 향상시키기 위해 사용자 지정 플러그인과 미들웨어를 쉽게 추가할 수 있습니다. 이렇게 하면 다양한 프로젝트 요구 사항에 적응할 수 있습니다.
  • 비동기 지원: Fastify는 비동기 프로그래밍 패턴을 완전히 수용하여 I/O 바운드 작업을 효율적으로 처리할 수 있도록 설계되었습니다. async/await와 같은 최신 JavaScript 기능을 활용하여 비동기 코드를 간소화합니다.
  • 개발자 친화적: 직관적인 API와 포괄적인 문서를 통해 Fastify는 개발자 친화적인 경험을 제공합니다. 명확하고 간결한 문법을 제공하여 초보자와 숙련된 개발자 모두가 쉽게 이해하고 사용할 수 있도록 합니다.

이 튜토리얼에서 다룰 내용:

이 튜토리얼에서는 Fastify를 사용하여 간단한 API를 구축하는 기본 사항을 다룰 것입니다. Fastify 프로젝트 설정을 시작으로, 라우트 처리, 요청 검증, 미들웨어, 오류 처리, 테스트 및 배포를 포함한 주요 기능을 단계적으로 탐구할 것입니다. 튜토리얼이 끝날 즈음, Fastify를 사용하여 강력하고 효율적인 웹 애플리케이션을 만드는 방법에 대해 확실히 이해하게 될 것입니다.


필수 조건

시작하기 전에 다음의 필수 조건이 설치되어 있는지 확인하세요:

  1. Node.js 및 npm: Fastify는 시스템에 Node.js 및 npm이 설치되어 있어야 합니다. 공식 Node.js 웹사이트에서 다운로드하여 설치할 수 있습니다.
  2. JavaScript 및 Node.js의 기본 지식: 이 튜토리얼에서는 JavaScript와 Node.js 작업에 대한 기본적인 이해가 있다고 가정합니다. 콜백, 프로미스 및 모듈과 같은 개념에 대한 익숙함은 Fastify의 기능을 탐색할 때 유용합니다.

이 필수 조건이 갖춰지면 Fastify로의 구축을 시작할 준비가 된 것입니다! 시작해봅시다.


Fastify 설정하기

npm을 통한 Fastify 설치

Fastify를 시작하려면 먼저 npm을 통해 설치해야 합니다. npm은 Node.js의 패키지 관리자입니다. Yarn이나 Bun의 팬이라면 그것들을 사용할 수도 있습니다. 이 가이드에서는 NPM을 사용하겠습니다.

또한, NPM을 사용하는 방법을 잘 모르는 경우 이 튜토리얼을 확인하여 연습해볼 수 있습니다.

시작하려면 바탕화면이나 Fastify 프로젝트를 설정하고 싶은 작업 디렉토리에 새로운 폴더를 만들어줍니다.

이 작업을 위해 터미널에서 다음 코드를 순서대로 실행하세요:

mkdir my-fastify-project
cd my-fastify-project

이제 폴더를 만들고 터미널에서 해당 폴더로 이동했습니다. 잘 하셨습니다!

다음으로, 해당 프로젝트에 대해 npm을 초기화하고 Fastify 프레임워크를 설치하겠습니다.

npm init -y
npm install fastify

현재 시점에서, 여러분의 프로젝트는 package.json, package-lock.json, & node_moudles 파일로만 구성되어 있습니다. 이 파일은 프로젝트와 그 종속성에 대한 메타데이터를 포함하고 있습니다. Fastify 애플리케이션을 계속 구축하면서 이 구조에 더 많은 파일과 디렉토리를 추가할 것입니다.

간단한 서버 만들기

기본 Fastify 서버 설정하기

이제 프로젝트가 준비되었으니 간단한 Fastify 서버를 만들어 봅시다. 프로젝트 디렉토리에 index.js라는 새 파일을 만들고 다음 코드를 추가하세요:

// Fastify 모듈 가져오기
const fastify = require('fastify')();

// 루트 URL에 대한 라우트 핸들러 정의
fastify.get('/', async (request, reply) => {
  return { hello: 'world' };
});

// 서버 시작
const start = async () => {
  try {
    await fastify.listen({ port: 3000 });
    console.log('서버가 http://localhost:3000 에서 실행 중입니다.');
  } catch (error) {
    console.error('서버 시작 오류:', error);
    process.exit(1);
  }
};

start();

이 코드는 포트 3000에서 들어오는 HTTP 요청을 수신하는 기본 Fastify 서버를 설정합니다. 루트 URL (/)로 요청이 들어오면 "hello": "world"라는 메시지를 포함하는 JSON 객체로 응답합니다.

다음 코드를 실행하려면 이를 실행할 수 있도록 알려줘야 합니다. 어떻게 할 수 있을까요? 터미널에서 프로젝트 루트 폴더에서 node index.js를 실행하면 됩니다.

하지만 이렇게 하면 파일 업데이트를 할 때마다 명령을 실행해야 합니다. 그런 스트레스를 원하지는 않습니다. 파일을 저장하면 자동으로 다시 빌드가 트리거되도록 해야 합니다. 어떻게 하면 될까요?
그럴 때 Nodemon이 등장합니다.

Nodemon을 설치하려면 터미널에서 다음 코드를 실행하세요;
npm install nodemon --save-dev.
이렇게 하면 Nodemon이 설치되며 코드에 집중할 수 있고 수동으로 다시 빌드를 요청하지 않아도 됩니다.

하지만 Nodemon 설치는 여기까지가 아닙니다. Nodemon을 위한 마지막 코드 조각을 설정할 것입니다. 무엇을 해야 할까요? 파일을 저장할 때 자동으로 트리거되도록 설정해야 합니다. 어떻게 할 수 있을까요?

여러분의 package.json 파일을 열고 script 섹션을 다음 코드로 교체하세요:

 "scripts": {
    "start": "node index.js",
    "dev": "nodemon index.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },

이제 서버를 시작하기 위해 프로젝트 루트 디렉토리에서 npm run dev를 실행해야 합니다. 이를 완료한 후에는 브라우저로 이동하여 http://localhost:3000/를 입력하세요 - 올라가서 정의한 응답 hello world를 보게 될 것입니다.

서버 출력에서 "Hello World" 텍스트를 보여주는 페이지.

서로 다른 HTTP 메서드(GET, POST 등)를 처리하기 위한 라우트 추가하기

Fastify는 REST APIs를 쉽게 구축하도록 하며 GET, POST, PUT, DELETE 등과 같은 서로 다른 HTTP 메서드를 처리하기 위한 라우트를 정의할 수 있습니다. POST 요청을 처리하기 위해 라우트를 추가해 보겠습니다. index.js 파일을 다음 코드로 업데이트하세요:

// '/data'에 대한 POST 요청을 처리하는 라우트 핸들러 정의
fastify.post('/data', async (request, reply) => {
  const payload = request.body;
  // 들어오는 데이터 처리
  // 지금은 수신된 데이터를 단순히 에코하겠습니다.
  return { receivedData: payload };
});

이제 Fastify 서버는 루트 URL(/)에 대한 GET 요청과 /data 엔드포인트에 대한 POST 요청을 모두 처리할 수 있습니다.

JSON 데이터로 응답하기'/'와 '/data')에서, 우리는 Fastify의 내장 응답 메서드를 사용하여 JSON 데이터로 응답하고 있습니다. Fastify는 JavaScript 객체를 자동으로 JSON으로 직렬화하여 구조화된 데이터를 응답으로 보내기 쉽게 만듭니다.

이러한 추가로 인해 우리의 Fastify 서버는 이제 기본 HTTP 요청을 처리하고 JSON 데이터로 응답할 수 있습니다.

하지만 POST 요청을 어떻게 테스트할 수 있을까요? 브라우저에서 POST 요청을 테스트할 수는 없죠?
도움을 위해 Apidog을 사용하겠습니다.

💡
Apidog는 API 관리 도구로, 설계, 디버그, 테스트, 문서화, 모의, 신속하고 함께 API를 구축
button

무료 계정을 등록하고, 웹 인터페이스를 사용해 보거나 데스크탑 애플리케이션을 다운로드하여 새로 생성한 API를 테스트할 수 있습니다.

Apidog 사용 방법을 이해하는 데 도움이 되도록 잘 작성된 가이드를 제공합니다. 길고 긴 이야기와 독서를 건너뛰고, 이 섹션을 살펴보세요 - 이것이 지금 우리에게 가장 중요한 것입니다.

위 가이드를 따랐다면 Apidog에 대해 많은 부분 알고 계실 것입니다.

요청 시작을 위한 Apidog의 페이지

프로젝트 페이지에서 요청을 탭하면 Fastify 서버에서 생성한 API를 테스트할 수 있습니다.

Apidog 요청 페이지

위 스크린샷에서 보시다시피 HTTP 메서드를 POST로 설정, 올바른 URL을 입력(서버가 아직 작동 중인지 확인), 본문 페이로드를 입력해야 합니다.

위 단계를 올바르게 따르면 200 응답 코드를 얻을 수 있으며, 응답을 볼 수 있습니다.

모든 것이 잘 작동하면 저와 같은 응답을 받아야 합니다.

미들웨어 및 플러그인

Fastify에서 미들웨어 소개

Fastify의 미들웨어 함수는 요청 및 응답 객체에 접근할 수 있는 기능들이며, 다음 미들웨어 함수 또는 라우트 핸들러로 제어를 전달하기 전에 로깅, 인증, 데이터 구문 분석 등의 작업을 수행할 수 있습니다. 미들웨어 함수는 애플리케이션 파이프라인에 추가되는 순서대로 실행됩니다.

사용자 지정 미들웨어 함수 생성하기

Fastify에서 request, reply, next 매개변수를 받아들이는 함수를 정의하여 사용자 지정 미들웨어 함수를 만들 수 있습니다. 다음은 커스텀 로깅 미들웨어의 예입니다:

// 커스텀 로깅 미들웨어
const loggerMiddleware = async (request, reply, next) => {
  console.log(`[${new Date().toISOString()}] ${request.method} ${request.url}`);
  next();
};

// Fastify에 미들웨어 등록
fastify.use(loggerMiddleware);

이 예에서 loggerMiddleware 함수는 각 들어오는 요청의 타임스탬프, HTTP 메서드 및 URL을 로깅합니다. 그런 다음 next() 함수를 호출하여 제어를 다음 미들웨어 함수 또는 라우트 핸들러로 전달합니다.

이것이 Node.js 및 Express.js와 같은 다른 프레임워크에서 미들웨어가 작동하는 방식입니다.

Fastify 플러그인 설치 및 사용하기

Fastify는 인증, 데이터베이스 통합, 검증 등 여러 목적으로 기능을 확장하는 풍부한 플러그인 생태계를 제공합니다. npm을 통해 Fastify 플러그인을 설치하고 사용할 수 있습니다. 플러그인을 설치하고 Fastify에 등록하는 방법은 다음과 같습니다:

npm install fastify-auth fastify-cors

// 필요한 플러그인 가져오기
const fastifyAuth = require('fastify-auth');
const fastifyCors = require('fastify-cors');

// Fastify에 플러그인 등록
fastify.register(fastifyAuth);
fastify.register(fastifyCors);

이 예에서는 인증을 위한 fastify-auth 및 교차 출처 리소스 공유(CORS) 지원을 위한 fastify-cors의 두 플러그인을 설치하고 등록했습니다.

하지만 잠깐만! 우리는 이것을 테스트할 계획이 아닙니다. 이는 Fastify에서 미들웨어와 플러그인을 설치하고 실행하는 방법을 보여주는 예일 뿐입니다.

미들웨어와 플러그인에 대해 더 알아보기 위한 기사를 확인하세요. 스스로 연구하고 찾아볼 수 있습니다. 혼동하지 마세요. Node.js와 Fastify에서 미들웨어는 광범위한 주제입니다.

오류 처리

Fastify 라우트의 오류 처리

Fastify에서는 오류를 발생시키거나 비동기 함수에서 반환하여 라우트 핸들러에서 오류를 처리할 수 있습니다. Fastify는 이러한 오류를 자동으로 포착하고 클라이언트에 적절한 오류 응답을 전송합니다. 예를 들어:

// 오류 처리가 있는 라우트 핸들러
fastify.get('/error', async (request, reply) => {
  // 오류 시뮬레이션
  throw new Error('이런! 잘못된 일이 발생했습니다.');
});

이 예에서 사용자가 존재하지 않는 /error로 이동하거나 다른 무언가가 발생할 경우, 우리는 오류를 발생시키고 사용자에게 무슨 일이 일어나고 있는지를 알릴 수 있습니다.

궁금하시다면(당연히 궁금해야 합니다), 오류에 대해 더 배우기 위한 기사를 확인해 보세요.

미들웨어, 플러그인 및 Fastify의 오류 처리 기능을 활용함으로써 웹 애플리케이션 및 API의 기능성과 신뢰성을 향상시킬 수 있습니다. 이러한 기능은 코드를 모듈화하고 재사용 가능한 구성 요소를 추가하며 오류를 우아하게 처리할 수 있게 하여 더욱 유지 관리가 용이하고 견고한 애플리케이션을 만들어줍니다.

결론

이 튜토리얼에서는 Fastify에 대한 포괄적인 소개를 다루었습니다. Fastify는 Node.js를 위한 빠르고 저오버헤드 웹 프레임워크입니다. 지금까지 탐구한 주요 주제를 요약하면 다음과 같습니다:

  1. Fastify 소개: Fastify와 다른 Node.js 프레임워크와의 장점, 성능 이점, 사용하기 쉬운 API 및 풍부한 플러그인 생태계에 대한 논의로 시작했습니다.
  2. Fastify 설정하기: npm을 사용하여 Fastify 설치, 새로운 Fastify 프로젝트 초기화 및 프로젝트 구조 탐색 과정을 거쳤습니다. 이는 Fastify 애플리케이션을 구축하는 기반을 마련했습니다.
  3. 간단한 서버 만들기: 기본 Fastify 서버를 설정하는 방법, 서로 다른 HTTP 메서드를 처리하는 라우트 추가, JSON 데이터로 응답하는 방법을 시연했습니다. 이를 통해 Fastify에서 라우트를 정의하고 요청을 처리하는 단순함과 유연성을 보여주었습니다.
  4. 미들웨어 및 플러그인: Fastify의 미들웨어 개념을 소개하고 사용자 지정 미들웨어 함수를 만드는 방법을 보여주었습니다. 또한, 기능을 추가하기 위해 플러그인으로 Fastify의 기능을 확장하는 방법을 논의하였고, 인증 및 CORS 지원과 같은 기능을 추가하기 위해 설치하고 사용하는 방법을 다루었습니다.
  5. 오류 처리: Fastify에서 오류 처리, 라우트에서 오류를 처리하는 방법, Fastify의 내장 오류 처리 기능을 사용하는 방법, 예외를 관리하고 클라이언트에 의미 있는 오류 응답을 제공하는 사용자 정의 오류 처리 로직을 구현하는 방법을 다뤘습니다.

이 튜토리얼을 통해 Fastify로 웹 애플리케이션 및 API를 구축하는 데 필요한 지식을 획득했습니다. Fastify의 핵심 기능, 요청 및 응답 처리 방법, 플러그인으로 프레임워크를 확장하는 방법, 오류를 효과적으로 관리하는 방법에 대해 배웠습니다. 이러한 기술을 활용하면 Fastify의 고급 기능을 탐험하고 효율적이고 확장 가능한 웹 애플리케이션을 생성할 수 있습니다.

Fastify로 작업을 계속하면서, 방대한 문서 및 사용 가능한 플러그인 생태계를 탐색하는 것을 잊지 마세요. Fastify 커뮤니티는 활발하고 지원적이며, 여러분의 기술을 발전시키고 robust한 애플리케이션을 구축하는 데 도움이 되는 풍부한 자료를 제공합니다.

Fastify에 대한 이 튜토리얼을 따라 주셔서 감사합니다. 코딩을 즐기세요!

EXAONE 3.0 7.8B 모델을 로컬에서 실행하는 방법튜토리얼

EXAONE 3.0 7.8B 모델을 로컬에서 실행하는 방법

이 글에서는 EXAONE 3.0 7.8B 모델을 자신의 컴퓨터에서 설치하고 실행하는 방법을 단계별로 상세히 알아보겠습니다

Young-jae

March 25, 2025

Claude 3.7 소넷 API에 접근하고 Apidog을 사용하여 테스트하는 방법튜토리얼

Claude 3.7 소넷 API에 접근하고 Apidog을 사용하여 테스트하는 방법

Anthropic의 최신 출시인 Claude 3.7 Sonnet에 대해 기대하고 있으며, Apidog로 테스트하면서 API를 통한 기능을 탐색하고 싶다면, 올바른 장소에 오신 것입니다. 💡시작하기 전에 간단한 팁을 드리겠습니다: 오늘 Apidog를 무료로 다운로드하여 API 테스트 프로세스를 간소화하세요. 특히 Claude 3.7 Sonnet의 강력한 기능을 탐색하는 데 적합한 도구로, 최첨단 AI 모델을 테스트하려는 개발자에게 이상적입니다!버튼 Claude 3.7 Sonnet이 중요한 이유로 시작해봅시다. Anthropic은 최근 2025년 2월 24일에 이 모델을 공개했으며, 즉시 및 단계별 응답을 위한 하이브리드 추론 기능을 갖춘 가장 지능적인 창작물로 자리 잡았습니다. 이는 코딩, 추론 등 여러 부분에서 혁신적인 변화를 가져오며, 현재 e Anthropic API, Amazon Bedrock, Google Cloud의 Vertex AI를 통해 사용할 수 있습니다. 이 튜

Young-jae

February 25, 2025

GitHub Copilot 무료: 어떻게 시작하나요?튜토리얼

GitHub Copilot 무료: 어떻게 시작하나요?

GitHub Copilot 무료 사용법을 알아보세요. 이 AI 기반 코딩 도우미에 대한 이 가이드는 VS Code와 JetBrains와 같은 인기 IDE의 설정 단계를 다루며, 무료로 스마트한 코드 제안 및 완성을 통해 생산성을 높일 수 있도록 도와줍니다!

Young-jae

December 19, 2024