[NodeJS]Express 모듈

Philip Sung·2023년 1월 5일
0

[NodeJS]

목록 보기
1/4
post-thumbnail

01 개요

본 문서에서는 NodeJS에서 사용하는 모듈 중 하나인 Express를 사용하기 위한 모듈들에 대해서 다룬다.
Express를 사용하여 서버를 만들 때는 보통 다음과 같은 순서로 구조를 짠다.

  • express를 불러온다.
  • 포트를 설정한다.
  • 공통적으로 사용하는 미들웨어를 부착한다.
  • 라우터를 구성한다.
  • 404 처리 미들웨어를 구성한다.
  • 오류 처리 미들웨어를 구성한다.
  • 서버가 포트를 리스닝한다.

위와 같은 흐름 외에도 사용할 수 있는 여러가지 미들웨어를 살펴본다.

최종수정일 : 2023.01.24




02 미들웨어(Middleware)

app.use(middlewareName)

클라이언트로부터의 요청과 서버에서 보내는 응답 사이에서는, 요청에 대한 처리, 데이터 정제 등 다양한 동작이 필요하다. 서버 내에서 이러한 실질적인 역할들을 수행하는 객체들을 미들웨어라고 부른다. 위와 같은 메서드를 사용해서 미들웨어를 사용할 수 있도록 가져올 수 있다. next() 함수를 사용하여 미들웨어의 흐름제어를 해줄 수 있다.

자주 사용되는 미들웨어는 아래와 같다.

02.01 정적파일 전송 : express.static

app.use(express.static (__dirname + '/public ))

<!-- current file : ./public/image.html -->
...
<body>
  <img src="./sample.png" />
</body>
...

이미지, css, 스크립트 파일 등의 정적 파일(static file)을 클라이언트에게 보내주기 위한 미들웨어로, 위와 같이 등록된 폴더의 파일은 static 미들웨어를 거쳐 클라이언트에게로 보내진다.
express에 기본적으로 내장되어 있는 미들웨어이다.

02.02 오류처리 : function (err, req, res, next) {}

app.use(function (err, req, res, next) {
	console.error(err.stack);
	res.status(500).sent('Error occurred);
)};

02.03 라우팅 : router

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

...

app.get('');
app.post();
app.put();
app.delete();

...

라우터는 응답 자체인 것처럼 같이 보일 수 있지만, 실질적으로받은 요청에 대해 응답을 보낼것을 요청하는 미들웨어이다. 각각의 메서드는 아래와 같이 HTTP의 REST API와 상응하는 역할을 한다.

Express RoutingREST API(HTTP)Function
app.post()POSTCREATE : 데이터를 생성한다.
app.get()GETREAD : 데이터를 조회한다.
app.put()PUTUPDATE : 데이터를 수정한다.
app.delete()DELETEDELETE : 데이터를 삭제한다.

02.03 로깅 : morgan, winston

morgan
요청과 응답에 대한 사항을 정리하여 콘솔에 로그를 기록한다. 호출된 라우터의 상태와 결과값을 보여준다.

winston
요청과 응답에 대한 사항을 json 형태로 dump 파일에 기록하여준다.

02.04 요청접근 : express.json, express.urlencoded

app.use(express.json())
app.use(express.urlencoded({ extended: true }))

클라이언트에서 들어온 POST, PUT 요청에 대한 정보를 가진 req.body에 접근하기 위해 필요한 미들웨어이다. request body의 내용을 파싱하고, req.body에 데이터를 담아준다.
express에 기본적으로 내장되어 있는 미들웨어이다.(계속)...

profile
Philip Sung

0개의 댓글