Express 개발 강좌, 기본 라우팅 설정 및 GET, POST 요청 처리

Express.js는 Node.js에서 가장 널리 사용되는 웹 애플리케이션 프레임워크로서,
서버 사이드 웹 개발을 단순화하고, 엔드포인트를 구성하여 빠르고 쉽게 웹 애플리케이션을 구축할 수 있게 해줍니다.
이번 강좌에서는 Express의 기본적인 라우팅 설정 방법과 GET 및 POST 요청을 처리하는 방법에 대해 자세히 살펴보겠습니다.

1. Express.js란?

Express.js는 Node.js 기반의 어플리케이션 프레임워크로, RESTful API와 웹 애플리케이션을 구축하는 데 도움을 줍니다.
Express는 경량화된 구조를 가지고 있어 빠르게 웹 서버를 설정하고, 미들웨어 기능을 통해 HTTP 요청을 보다 손쉽게 처리할 수 있습니다.
또한, 다양한 플러그인과 미들웨어를 통한 확장성이 뛰어납니다.

2. Express 설치 및 기본 설정

Express를 사용하기 위해서는 Node.js가 필요합니다. Node.js가 설치된 후, Express를 설치하는 방법을 살펴보겠습니다.

npm install express

설치가 완료되면, 다음과 같이 Express 애플리케이션을 설정할 수 있습니다.

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

app.listen(PORT, () => {
    console.log(`서버가 포트 ${PORT}에서 실행되고 있습니다.`);
});

3. 기본 라우팅 설정

Express 애플리케이션에서 라우팅은 HTTP 요청을 특정 URL 경로와 연결하는 과정입니다.
기본적인 라우팅을 설정하는 방법을 살펴보겠습니다.

3.1 기본 GET 요청 처리

GET 요청은 서버에서 데이터를 요청할 때 사용됩니다. 다음과 같이 기본 경로(“/”)에 대한 GET 요청을 처리하는 라우트를 설정할 수 있습니다.

app.get('/', (req, res) => {
    res.send('안녕하세요, Express!');
});

위 코드를 실행한 후 브라우저에서 http://localhost:3000를 방문하면
“안녕하세요, Express!”라는 메시지를 확인할 수 있습니다.

3.2 GET 요청의 URL 매개변수 처리

URL 매개변수는 동적인 경로를 정의할 수 있게 해줍니다. 예를 들어, 사용자 ID를 URL로 전달받는 방법을 알아보겠습니다.

app.get('/user/:id', (req, res) => {
    const userId = req.params.id;
    res.send(`사용자 ID는 ${userId}입니다.`);
});

이를 통해 http://localhost:3000/user/123 라는 URL로 접속하면
“사용자 ID는 123입니다.”라는 메시지를 표시합니다.

3.3 기본 POST 요청 처리

POST 요청은 서버에 데이터를 전송할 때 사용됩니다. Express에서는 POST 요청을 다음과 같이 처리할 수 있습니다.

app.use(express.json()); // JSON 형식의 바디를 파싱하기 위한 미들웨어

app.post('/user', (req, res) => {
    const user = req.body; // JSON 바디에서 사용자 데이터 추출
    res.send(`사용자가 추가되었습니다: ${JSON.stringify(user)}`);
});

위 코드는 사용자의 정보를 JSON 형식으로 POST 요청을 통해 받을 준비를 하고 있습니다.
이 API 호출을 테스트하기 위해 Postman과 같은 도구를 사용할 수 있습니다.

4. GET 및 POST 요청 예제

아래는 GET 및 POST 요청을 처리하는 간단한 예제입니다. 여기에 사용자 정보를 저장하고 검색하는 기능을 추가해보겠습니다.

let users = []; // 사용자 정보를 저장할 배열

// GET 요청: 모든 사용자 정보 조회
app.get('/users', (req, res) => {
    res.json(users);
});

// POST 요청: 신규 사용자 추가
app.post('/users', (req, res) => {
    const newUser = req.body;
    users.push(newUser);
    res.status(201).send(`사용자 ${newUser.name} 추가 성공`);
});

이 API는 사용자의 추가와 조회 기능을 제공하며, 사용자는 JSON 형식으로 데이터를 전송할 수 있습니다. 예를 들어,
다음과 같이 요청을 보내면 새로운 사용자를 추가할 수 있습니다.

{ "name": "홍길동", "age": 30 }

5. 미들웨어 사용

Express의 강력한 기능 중 하나는 미들웨어를 사용하여 요청과 응답 객체를 수정하거나 요청을 처리하는 것입니다.
미들웨어는 요청이 라우터에 도달하기 전에 또는 응답이 클라이언트에 도달하기 전에 실행됩니다.

5.1 기본 미들웨어 설정

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

5.2 사용자 정의 미들웨어

사용자 정의 미들웨어를 만들어 요청의 로깅을 수행할 수 있습니다.

app.use((req, res, next) => {
    console.log(`${req.method} 요청에 대한 ${req.url}에 접근했습니다.`);
    next(); // 다음 미들웨어 또는 라우터로 제어를 전달
});

6. 오류 처리

오류 처리는 모든 서버 애플리케이션에서 매우 중요합니다. Express에서는 오류 처리를 위해 특별한 미들웨어를 사용할 수 있습니다.

app.use((err, req, res, next) => {
    console.error(err.stack);
    res.status(500).send('서버 내부 오류 발생');
});

위 미들웨어는 서버에서 발생한 오류를 청구하고, 클라이언트에게 오류 메시지를 전송합니다.

7. 마무리

이번 강좌에서는 Express를 사용하여 기본적인 라우팅을 설정하고, GET 및 POST 요청을 처리하는 방법에 대해 설명했습니다.
Express는 이처럼 간단한 설정으로 강력한 서버를 구성할 수 있도록 도와줍니다.
다음 강좌에서는 데이터베이스와의 연동 및 좀 더 복잡한 기능을 다룰 예정이니 많은 관심 부탁드립니다.

감사합니다!