NodeJS

서버를 좀 더 간편하게 만드는 방법 express

개발자doc 2024. 6. 5. 18:40
목차
1. express모듈?
2. express의 장점
3. 설치하기
4. 미들웨어
5. 라우팅
6. 서버 실행하기

 

1. express모듈?
  • nodejs를 사용하여 간단하게 서버 로직을 작성할 수 있도록 해주는 모듈

기존에는 웹 서버를 구성하기 위해서는 http이나 net 모듈을 사용하였다면 express는 여러 기능들을 지원하여 좀 더 편하게 서버를 만들 수 있게 해준다. 

2. express의 장점

 

3. 설치 및 모듈 사용

express는 nodejs의 내장 모듈이 아니기 때문에 설치를 해야한다. 

npm install express

 

설치가 완료되었다면 package.json의 의존성 부분에서 버전정보를 확인할 수 있다.

package.json
"dependencies": { "express": "^4.19.2" }

설치가 정상적으로 되었으니 js파일에서 모듈을 가져와야 한다.

const express = require("express");
//app은 서버객체로 이름은 임의로 사용가능하나 자주 사용하는 app이라고 지정
const app = express();

 

4. 미들웨어
  • 클라이언트의 요청을 받았을 때 응답하기 전 중간에 요청의 목적에 맞게 기능을 하는 함수
app.use(요청에 따른 필요한 기능)

//ex)
// JSON형태의 요청 body를 파싱
app.use(express.json())
// 요청에 대해 쿼리 스트링을 파싱
app.use(express.urlencoded({ extended: true }))

클라이언트에서 form을 통해 전송되는 데이터를 처리하기 위해 미들웨어를 사용하여 파싱과정을 거친다.

5. 라우팅 처리

라우팅은 특정 URL에 요청을 했을 때 해당 경로를 찾아가는 과정을 말한다. express는 http모듈을 사용했을 때와 라우팅 처리 방법이 조금 다르다. 어떤 것이 다른지 알아보자.

1 ) HTTP모듈 사용

const http = require('http');
const server = http.createServer();

server.on("connection", (client) => {
    client.on('data', (chunk) => {
        const path = chunk.toString().split(" ")[1].split("?")[0];
        if (path === "/") {
            console.log("/경로로 요청됨");
        }
    })
})

http모듈을 사용할 경우 서버 객체를 생성 후 연결이 되었다는 이벤트를 정의하고 그 안에서 요청을 받았을 때 이벤트를 정의해주어야한다.

그리고 문자열인 요청 헤더에서 경로를 추출하여 라우팅을 처리를 해주어야 한다. 

 

2 ) express 사용

app.요청메서드(요청할 경로,()=>{
   //해당 경로로 요청이 됐을 때 처리할 로직
})

//ex)
app.get("/",()=>{
    console.log("/경로로 요청됨")
})

express를 사용하여 라우팅 처리를 할 때는 요청 메서드를 가공하여 요청 경로를 추출할 필요가 없다.

 

6. 서버 실행하기 

서버를 실행하는 부분은 http모듈과 크게 다르지 않다. 서버 객체를 통해 서버를 listen상태로 만들어주면 된다.

app.listen(서버포트번호,()=>{
    서버가 켜질 때 실행될 로직
})

//ex)
app.listen(3000,()=>{
    console.log('서버실행')
})