Express

최근혁(GeunH)·2023년 9월 27일

JavaScript

목록 보기
4/5

JS에서 node.js를 사용하여 서버를 구축한다면, express에 대해서 쉽게 접할 수 있을 것이다.

오늘은 express가 무엇인지, 왜 사용하는지에 대해서 정리해보았다.


웹 프레임워크

https://expressjs.com/ko/ 사이트를 참고하면 설명에 'Node.js를 위한 빠르고 개방적인 간결한 웹 프레임워크'라고 되어있다.

이를 이해하기 위해서는 우선 '웹 프레임워크' 가 무엇인지 이해할 필요가 있다.

웹 프레임워크(Web framework)는 웹 애플리케이션 개발을 단순화하고 구조화하는 데 사용되는 도구나 라이브러리의 집합이다. 웹 프레임워크는 웹 애플리케이션을 구축하는 데 필요한 기본 구조, 패턴 및 기능을 제공하여 개발자가 더 효율적으로 작업할 수 있도록 도와주는 것인데 주로 아래와 같은 목적을 가진다.

라우팅 및 URL 관리:

  • URL 경로와 연결되는 라우팅을 제공하여 클라이언트 요청을 적절한 핸들러나 컨트롤러로 라우팅한다.

HTTP 요청 처리:

  • 웹 프레임워크는 HTTP 요청을 처리하고, 요청된 리소스(페이지 또는 데이터)를 반환하는 데 도움을 준다.

데이터베이스 연동:

  • 데이터베이스와의 상호작용을 단순화하고, 데이터를 저장하고 검색하는 데 필요한 기능을 제공한다.

세션 및 사용자 인증 관리:

  • 사용자 세션을 관리하고 사용자 인증을 처리하는 기능을 제공한다.

API 지원:

  • RESTful API 또는 GraphQL과 같은 API 엔드포인트를 구축하는 데 도움을 준다.

Express

그럼 이제 express라는 웹 프레임워크에 대해서 알아보자

"Express.js" 또는 "Express"는 Node.js 환경에서 웹 애플리케이션 및 API를 개발하기 위한 가장 인기 있는 웹 프레임워크 인데, Express는 간결하면서도 강력한 기능을 제공하여 Node.js를 기반으로 하는 서버 측 웹 어플리케이션을 빠르고 쉽게 개발할 수 있도록 도와준다.

그럼 어떤 측면에서 웹 어플리케이션을 빠르고 쉽게 개발할 수 있도록 도와준다고 할 수 있을까?

미들웨어 (Middleware):

  • Express.js의 핵심 개념 중 하나는 미들웨어이다. 미들웨어 함수는 HTTP 요청과 응답의 중간에 위치하며, 요청과 응답을 조작하거나 처리하도록 하는데, 예를 들어, 로깅, 세션 관리, 사용자 인증, 요청 데이터 파싱 등의 작업을 미들웨어로 처리할 수 있다. 이 미들웨어 함수는 app.use() 또는 특정 라우팅 경로에 대한 app.get(), app.post() 등의 메서드 내에서 사용된다.

라우팅 (Routing):

  • Express.js는 URL 경로와 관련된 라우팅을 쉽게 정의하고 관리할 수 있다. 예를 들어, 특정 URL에 대한 요청에 대한 핸들러 함수를 지정하고, 해당 경로에 요청이 들어올 때 Express는 해당 핸들러 함수를 실행하는데, 이를 통해 다양한 엔드포인트를 처리할 수 있다.

정적 파일 서비스:

  • Express는 정적 파일(예: 이미지, CSS, JavaScript 파일)을 제공하는 내장된 미들웨어를 제공하는데, 이를 통해 클라이언트에 정적 자원을 서비스하는 데 용이하다. 클라이언트에서는 이러한 public(예시) 폴더에 접근하여 여러 자원정보를 서버로부터 얻어올 수 있다.
app.use(express.static('public'));

Express 사용법

환경 설정과 의존성 로드: Express 애플리케이션을 만들기 위해 먼저 Express 모듈을 설치하고 의존성을 로드하는데, 기본적으로 Node.js 에서 Express 모듈을 설치하려면 npm 명령을 사용한다:

npm install express

Express 어플리케이션 생성: Express 어플리케이션을 생성하려면 express() 함수를 사용하는데, 이 함수는 Express 애플리케이션 객체를 반환한다.

const express = require('express');
const app = express();

미들웨어 설정:

위 설명에서와 같이 Express는 미들웨어를 사용하여 HTTP 요청과 응답을 처리하는데, 미들웨어는 Express 애플리케이션에 연결되며, 요청 처리 파이프라인에서 순차적으로 실행된다. app.use() 메서드를 사용하여 미들웨어를 추가하며, 각 미들웨어는 요청 객체(req)와 응답 객체(res)를 조작하고 조건이 맞는다면 다음 미들웨어로 넘기는 역할을 한다.

app.use(express.json()); 
// JSON 파싱 미들웨어
app.use(express.urlencoded({ extended: false })); 
// URL-encoded 파싱 미들웨어

라우팅 설정:

Express에서 라우팅은 URL 경로와 연결된 핸들러 함수를 설정하는 과정이다. app.get(), app.post(), app.put(), app.delete() 등의 메서드를 사용하여 라우팅을 설정하고 요청 경로와 핸들러 함수를 연결한다.

app.get('/', (req, res) => {
  res.send('응답텍스트');
});

HTTP 서버 생성:

Express는 내부적으로 Node.js의 http 모듈을 사용하여 HTTP 서버를 생성하고 요청을 받아들인다. HTTP 서버를 시작하려면 app.listen() 메서드를 사용하면 된다.

const port = 3000;
app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});

요청과 응답 처리:

HTTP 서버가 시작되면 클라이언트로부터의 요청이 들어올 때마다 Express는 라우팅된 핸들러 함수를 호출 및 요청 객체(req)와 응답 객체(res)를 이 함수에 전달하고, 핸들러 함수는 이러한 객체를 사용하여 클라이언트 요청을 처리한다.

응답 전송:

핸들러 함수에서 요청 처리가 완료되면 res.send(), res.json(), res.render() 등의 메서드를 사용하여 응답을 클라이언트에 전송한다.

profile
목표 : 스스로 성장하는 개발자

0개의 댓글