Express 개발 강좌, 기본 Express 서버 설정 및 실행

Express.js는 Node.js를 위한 빠르고 불어친 웹 애플리케이션 프레임워크로서, 웹 서버의 기본 구조를 쉽게 구축할 수 있도록 도와줍니다. 이 강좌에서는 Express 서버를 설정하고 실행하는 방법에 대해 상세히 설명하겠습니다.

1. Express.js란?

Express.js는 대규모 애플리케이션 구축을 위한 유연하고 모듈화된 웹 프레임워크입니다. RESTful API, 웹사이트 및 기타 서버측 응용 프로그램을 구축하는 데 적합합니다. Express는 미들웨어(layer)를 이용해 요청(request)과 응답(response)을 처리할 수 있으며, 라우팅(라우트 설정), 오류 처리, 요청 본문(movie) 분석 등을 효율적으로 수행할 수 있습니다.

2. 개발 환경 설정

Express 서버를 설정하기 위해서는 Node.js와 npm(Node Package Manager)이 필요합니다. 아래는 개발 환경 설정을 위한 단계를 소개합니다.

2.1 Node.js 설치

Node.js는 Express의 기반이 되는 JavaScript 런타임입니다. Node.js를 설치하려면 다음 링크를 방문해 운영 체제에 맞는 설치 파일을 다운로드하고 설치하세요: Node.js 공식 사이트.

2.2 npm 확인 및 설치

Node.js를 설치하면 npm도 같이 설치됩니다. 터미널 또는 명령 프롬프트를 열고 다음 명령어를 입력하여 npm이 정상적으로 설치되었는지 확인합니다.

node -v
npm -v

3. Express 프로젝트 생성

이제 Express 프로젝트를 생성해 보겠습니다. 프로젝트 디렉토리를 만들고, 그 디렉토리로 이동합니다.

mkdir express-server-example
cd express-server-example

3.1 npm 초기화

다음으로 npm init 명령어를 입력하여 프로젝트의 package.json 파일을 생성합니다. 이 과정에서 프로젝트에 대한 정보들을 입력하게 됩니다. 필요한 내용을 입력한 후, 생성된 package.json 파일은 프로젝트의 메타데이터를 포함합니다.

npm init -y

3.2 Express 설치

이제 Express 패키지를 설치합니다. 다음 명령어를 실행하여 Express를 설치합니다.

npm install express

4. 기본 Express 서버 설정

Express가 설치되었으니, 이제 기본적인 서버를 설정해 보겠습니다. 프로젝트 디렉토리 내에 app.js라는 파일을 생성합니다.

touch app.js

4.1 Express 서버 구성

app.js 파일을 열고 아래와 같은 기본 코드를 작성합니다:

const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;

// 기본 경로 설정
app.get('/', (req, res) => {
    res.send('안녕하세요, Express 서버가 실행 중입니다!');
});

// 서버 실행
app.listen(PORT, () => {
    console.log(`서버가 http://localhost:${PORT}에서 실행 중입니다.`);
});

4.2 코드 설명

  • require('express'): Express 모듈을 불러옵니다.
  • const app = express(): Express 인스턴스를 생성합니다.
  • app.get('/', ...): 클라이언트의 GET 요청을 처리하여 기본 경로에 대한 응답을 설정합니다.
  • app.listen(PORT, ...): 서버가 지정된 포트에서 실행되도록 설정합니다.

5. 서버 실행

이제 서버를 실행해 볼까요? 터미널에서 다음 명령어를 실행합니다:

node app.js

서버가 정상적으로 실행되면, 아래와 같은 메시지가 표시됩니다:

서버가 http://localhost:3000에서 실행 중입니다.

6. 서버 테스트

웹 브라우저를 열고 http://localhost:3000에 접속해 보세요. “안녕하세요, Express 서버가 실행 중입니다!”라는 메시지가 표시되는 것을 확인할 수 있습니다.

7. 다양한 라우팅 처리

Express는 GET, POST, PUT, DELETE 등 다양한 HTTP 요청을 처리할 수 있습니다. 아래는 여러 가지 라우팅 처리 예시입니다.

7.1 다양한 HTTP 메서드 예제

app.post('/submit', (req, res) => {
    res.send('폼 제출이 완료되었습니다!');
});

app.put('/update', (req, res) => {
    res.send('데이터가 업데이트되었습니다!');
});

app.delete('/delete', (req, res) => {
    res.send('데이터가 삭제되었습니다!');
});

7.2 라우팅 그룹화

Express는 라우트를 그룹화하는 것도 지원합니다. 다음은 그룹화된 라우트 예제입니다:

const userRouter = express.Router();

userRouter.get('/', (req, res) => {
    res.send('사용자 목록');
});

userRouter.get('/:id', (req, res) => {
    res.send(`사용자 ID: ${req.params.id}`);
});

app.use('/users', userRouter);

8. 미들웨어 활용

Express에서는 미들웨어를 통해 요청과 응답을 처리하는 로직을 추가할 수 있습니다. 다음은 요청 본문을 JSON 형식으로 파싱하는 미들웨어를 추가하는 방법입니다:

app.use(express.json());

9. 에러 처리

Express는 오류 처리를 위한 미들웨어를 제공하며, 다음과 같이 설정할 수 있습니다:

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

10. 결론

이 강좌를 통해 Express 서버를 설정하고 실행하는 기본적인 방법에 대해 알아보았습니다. Express는 쉽고 직관적인 API를 제공하여 빠르게 웹 애플리케이션을 개발할 수 있도록 도와줍니다. 다양한 기능을 활용하여 복잡한 애플리케이션도 손쉽게 구축할 수 있습니다. 앞으로는 데이터베이스 연결, 사용자 인증, 프론트엔드와의 연동 등 더 많은 기술을 배우고 활용해 보겠습니다.

이제 여러분도 Express를 사용하여 기본 웹 서버를 구현할 수 있습니다. 궁금한 점이나 피드백이 있다면 댓글로 남겨주세요!