Node.js 섹션 5 익스프레스 웹 서버 만들기

_upper·2023년 10월 31일

express 서버 사용해보기

Express 소개

http 모듈로 웹 서버를 만들 때 코드가 보기 좋지 않고, 확장성도 떨어짐

  • 프레임워크로 해결
  • 대표적인 것이 Express(익스프레스), Koa(코아), Hapi(하피)
  • 코드 관리도 용이하고 편의성이 많이 높아짐

package.json 만들기

직접 만들거나 npm init 명령어 생성

  • nodemon이 소스 코드 변경 시 서버를 재시작해줌

app.js 작성하기

서버 구동의 핵심이 되는 파일

  • app.set('port', 포트)로 서버가 실행될 포트 지정
  • app.get('주소', 라우터)로 GET 요청이 올 때 어떤 동작을 할지 지정
  • app.listen('포트', 콜백)으로 몇 번 포트에서 서버를 실행할지 지정

express로 html 서빙하기

const express = require("express");
const path = require("path");

const app = express();
app.set("port", process.env.PORT || 3000);

app.get("/", (req, res) => {
  // res.send('Hello, Express');
  res.sendFile(path.join(__dirname, "/index.html"));
});

app.listen(app.get("port"), () => {
  console.log(app.get("port"), "번 포트에서 대기 중");
});

미들웨어 사용하기

Node.js Express의 미들웨어는 웹 애플리케이션의 요청과 응답을 처리하는 중간 단계의 함수이다.

미들웨어는 Express 애플리케이션의 요청 처리 프로세스에서 요청과 응답 객체에 대한 조작 및 처리를 수행하는 역할을 한다.

미들웨어를 사용하여 요청 처리를 여러 단계로 나누고, 각 단계에서 필요한 작업을 수행할 수 있다.

app.use((req, res, next) => {
	console.log('모든 요청에 실행하고 싶어요');
    next();
})

app.get('*', (req, res) => {
  res.send('hello everybody');
});

app.get('/', (req, res) => {
  res.sendFile(path.join(__dirname, 'index.html'));
});

app.post('/', (req, res) => {
  res.send('hello express!');
});

// app.js
const express = require('express');
const app = express();

app.get('/category/javascript', (req, res) => {
  res.send('hello javascript');
});

app.get('/category/:name', (req, res) => {
  res.send('hello wildcard');
});

app.get('/about', (req, res) => {
  res.send('hello express');
});

app.get('*', (req, res) => {
  res.send('hello everybody');
});

app.listen(3000, () => {
  console.log('Server started on port 3000');
});

미들웨어 특성 이해하기

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

const app = express();

app.set('port', process.env.PORT || 3000);

app.use((req, res, next) => {
  console.log('1 요청에 실행하고싶어요');
  next();
});

app.get('/', (req, res) => {
  // res.sendFile(path.join(__dirname, 'index.html'));
  res.setHeader('Content-Type', 'text/html');
  res.status(200).send('.');
});

app.post('/', (req, res) => {
  res.send('hello express!');
});

next 활용법

next는 Express 미들웨어 함수에서 다음 미들웨어 함수를 호출하기 위한 콜백 함수이다.

Express 미들웨어는 요청과 응답 객체를 조작하고 다음 미들웨어 함수로 제어를 전달할 수 있다. 이때 next 함수를 사용하여 다음 미들웨어 함수를 호출한다.

morgan, bodyParser, cookieParser

Morgan:

morgan은 Express 애플리케이션의 HTTP 요청 로깅을 도와주는 미들웨어이다. 이를 사용하면 서버에 들어오는 요청에 대한 정보(메서드, URL, 상태 코드, 응답 시간 등)를 쉽게 로깅할 수 있다.

개발 및 디버깅 시에 유용하며, 클라이언트의 요청과 서버의 응답을 추적하는 데 도움이 된다.

Body-Parser:

body-parser는 클라이언트에서 전송된 HTTP 요청의 본문(body)을 파싱하는 역할을 한다.

HTTP POST 요청이나 PUT 요청과 같이 요청 본문에 데이터를 담아 보낼 때, 이 데이터를 파싱하여 JavaScript 객체로 변환해준다. 이렇게 파싱된 데이터를 Express 애플리케이션에서 사용할 수 있다.

cookie-parser는 클라이언트에서 전송된 쿠키를 파싱하는 역할을 한다.

쿠키는 클라이언트와 서버 간의 상태를 유지할 때 사용되며, 이를 파싱하여 JavaScript 객체로 변환해준다. 이후 Express 애플리케이션에서 파싱된 쿠키 데이터를 사용할 수 있다.

0개의 댓글