Node.js / express - 라우팅, 미들웨어

박재형·2020년 9월 9일

nodejs

목록 보기
4/6
post-thumbnail

💡 라우팅 ? 미들웨어 ?

라우팅이란, 클라이언트의 요청 패스를 보고 해당 요청 정보를 처리할 수 있는 곳으로 기능을 전달해주는 역할를 하는 것을 라우팅이라고 한다. 즉, 클라이언트의 요청 패스에 따라서 그것을 담당하는 함수로 분리시키는 것이라고 한다. 라우터로 등록하려면 get() 메소드를 호출하여 라우터로 등록할 수 있다.

미들웨어란, 이름의 말 그대로 중간에 있는 프로그램인데, 요청(request)응답(response) 의 사이에서 어느 한 과정을 처리하는 함수라고 할 수 있다. 한 마디로 익스프레스에서는 클라이언트의 요청과 응답에 관한 정보로 필요한 처리들을 할 수 있도록 따로 독립된 함수로 분리한다. 이렇게 분리한 함수들을 미들웨어라고 부른다.

미들웨어를 등록할 때는 use() 메소드를 이용하여 등록하고, 여러 미들웨어를 등록했다면 next() 메소드를 호출해서 다음 미들웨어가 처리들을 할 수 있도록 넘길 수 있다.

여러 기능들의 미들웨어들을 직접 만들려면 매우 힘들 것이다. 그래서 개발자들이 만들어놓은 미들웨어를 다운받고 불러와 사용할 수 있는데 예를 들어 serve-static, body-parser, Session, cookie-parser 등 만들어진 많은 미들웨어들이 있다. 다른 만들어진 미들웨어들을 사용하기 위해서는 npm 에서 다운받아 require() 메소드를 이용해 사용할 수 있다.


💻 예제들

var express = require('express')
var app = express()

//미들웨어 등록
var myLogger = function (req, res, next) {
  console.log('LOGGED')
  next()
}

//myLogger 미들웨어 함수 사용
app.use(myLogger)

//요청 패스에 대한 라우팅 등록
app.get('/', function (req, res) {
  res.send('Hello World!')
})

app.listen(3000)

위 코드는 express.js 공식 홈페이지의 guide에서 가져온 예제 코드이다. myLogger 라는 간단한 미들웨어를 등록하고 use() 메소드를 이용해 미들웨어를 사용하고 get() 메소드를 이용해 '/' 요청 패스로 라우팅을 등록하고 send()메소드로 문자열 출력을 하는 간단한 코드이다.

static 미들웨어

미들웨어들중 자주쓰이는 static 미들웨어는 특정 폴더의 파일들을 특정한 패스를 이용해 접근할 수 있도록 해준다. 예를 들어 아래와 같이 파일의 경로들이 public 폴더안에 있다고 한다면,

staticExample/public/index.html
staticExample/public/main.js
staticExample/public/style.css

아래의 코드와 같이 public 폴더에 접근할 수 있다.

app.use(express.static('public'))

물론 위와 같이 바로 접근도 할 수 있지만 static() 함수전에 첫 번째 파라미터로 요청 패스를 지정한다면 요청 패스와 static() 함수로 지정한 특정 폴더가 서로 mapping (서로 연결됨) 되어 접근할 수 있다.

app.use('/public', express.static('public'))

body-parser 미들웨어

body-parser 미들웨어는 클라이언트가 post 방식으로 요청할 때 본문쪽에 있는 요청 파라미터들을 parsing하여 요청 객체의 body 속성에 넣어준다.

var bodyParser = require('body-parser');

app.use(bodyParser.json());

app.use(bodyParser.urlencoded({ extended: false}));

위 코드는 body-parser를 사용하기 위한 코드는 위의 3줄이다. use() 메소드를 사용해 bodyParser.json() 메소드를 호출하면서 json 형식으로 전달된 요청 파라미터를 파싱할 수 있고, bodyParser.urlencoded() 메소드를 호출하면서 x-www-form-urlencoded 형식으로 전달된 요청 파라미터를 파싱할 수 있다.


참고 자료

< do it! nodejs 프로그래밍 >
< express.js 공식 문서 >

0개의 댓글