무지개곰
article thumbnail

express 서버 열기

Express는 Node.js에서 가장 많이 사용되는 웹 프레임워크 중 하나입니다. Express는 Node.js를 사용하여 웹 서버를 쉽게 작성할 수 있도록 많은 기능을 제공합니다.

Express 서버를 만드는 것은 간단합니다. 우선, Node.js 모듈을 설치해야 합니다. 다음 명령어를 사용하여 Express 모듈을 설치할 수 있습니다.

npm install express

 

서버를 여는 코드는 아래와 같습니다.

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

app.listen(8080, () => {
  console.log('8080서버를 열었습니다.')
})

정말 아주 기본적인 Express 서버를 만드는 코드입니다. 아무런 기능도 하지 않고 서버만 열렸습니다. 앞으로 이것을 기반으로 서버에 필요한 요소를 추가하도록 하겠습니다.


라우팅이란?

라우팅(Routing)은 HTTP 요청 메서드(GET, POST, PUT, DELETE 등) 및 URL 경로에 따라 어떤 함수가 실행될지를 결정하는 것을 말합니다.

Express에서 라우팅을 정의하려면 app.METHOD(PATH, HANDLER)와 같은 형식의 메서드를 사용합니다. 여기서 METHOD는 HTTP 요청 메서드(GET, POST, PUT, DELETE 등)를 나타내며, PATH는 URL 경로를 나타냅니다. HANDLER는 요청이 들어왔을 때 실행되는 콜백 함수입니다.

예를 들어, 다음과 같이 GET 요청을 처리하는 라우터를 정의할 수 있습니다.

app.get('/users', (req, res) => { 요청에 대한 처리 })

위 코드는 /users 경로로 GET 요청이 들어왔을 때, 해당 요청에 대한 처리를 담당하는 콜백 함수를 등록합니다.

또한, 다음과 같이 동적인 URL 경로를 처리할 수 있습니다.

app.get('/users/:id', (req, res) => { const userId = req.params.id })

위 코드는 /users/:id 경로로 GET 요청이 들어왔을 때, 해당 요청에 대한 처리를 담당하는 콜백 함수를 등록합니다. :id는 동적인 URL 파라미터를 나타내며, req.params.id를 통해 해당 파라미터 값을 얻을 수 있습니다.

Express에서는 이외에도 app.post(), app.put(), app.delete() 등의 메서드를 사용하여 POST, PUT, DELETE 요청을 처리할 수 있습니다.

요약하자면, Express에서 라우팅은 HTTP 요청 메서드와 URL 경로에 따라 요청을 처리하는 방법을 결정하는 것을 말합니다. Express에서는 app.METHOD(PATH, HANDLER)와 같은 메서드를 사용하여 라우터를 정의할 수 있으며, 이를 통해 동적인 URL 경로 및 URL 파라미터를 처리할 수 있습니다.


미들웨어란?

Express에서 미들웨어는 요청과 응답을 처리하는 함수입니다. 미들웨어는 요청과 응답의 중간에서 실행되며, 요청과 응답을 조작하거나 로깅, 에러 처리 등의 작업을 수행할 수 있습니다. 미들웨어를 사용하여 요청 및 응답을 처리할 수 있습니다. app.use() 메서드를 사용하여 미들웨어를 등록하고 요청을 처리합니다.

미들웨어의 종류

1. express.static 미들웨어

정적 파일을 서비스하기 위한 미들웨어입니다. 해당 경로에서 정적 파일을 찾고 요청에 대한 응답으로 파일을 제공합니다.

app.use("/", express.static(path.join(__dirname, "build")));
2. cookie-parser 미들웨어

HTTP 요청의 쿠키를 파싱 하는 미들웨어입니다. 쿠키는 브라우저와 서버 간의 상태 정보를 저장하기 위해 사용됩니다.

app.use(cookieParser());
 
3. morgan 미들웨어

HTTP 요청과 응답을 로깅하는 미들웨어입니다. 로깅은 애플리케이션 디버깅 및 모니터링에 유용합니다.

app.use((req, res, next) => {
  if (process.env.NODE_ENV === "production") morgan("combined")(req, res, next);
  else morgan("dev")(req, res, next);
});

위에서 설명한 미들웨어 외에도, Express에서는 다양한 미들웨어를 제공합니다. 또한, 개발자가 직접 미들웨어를 작성하여 사용할 수도 있습니다.


기본 서버 생성 및 설정

const express = require("express");
const session = require("express-session");
const path = require("path");
const dotenv = require("dotenv");
const morgan = require("morgan");
const cookieParser = require("cookie-parser");

dotenv.config();

const app = express();

app.set("port", process.env.PORT || 8080);
app.use("/", express.static(path.join(__dirname, "main")));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser(process.env.COOKIE_SECRET));
app.use((req, res, next) => {
  if (process.env.NODE_ENV == "production") {
    morgan("combined")(req, res, next);
  } else {
    morgan("dev")(req, res, next);
  }
});
app.use(
  session({
    resave: false,
    saveUninitialized: false,
    cookie: {
      httpOnly: true,
      secure: false,
    },
    secret: process.env.COOKIE_SECRET,
    name: "session",
  })
);
app.listen(app.get("port"), () => {
  console.log("서버 열음");
});

 

profile

무지개곰

@무지개곰

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!