공부하는 블로그

Node.js | Express : Intro 본문

Node.js

Node.js | Express : Intro

치킨닮은닭 2019. 12. 19. 16:19

Express

 

Express - Node.js 웹 애플리케이션 프레임워크

Node.js를 위한 빠르고 개방적인 간결한 웹 프레임워크 $ npm install express --save

expressjs.com

 익스프레스(Express)는 웹서버 구현을 보다 간편하게 하기 위한 Node.js의 프레임워크(Framework)로 프레임워크이다. 익스프레스 이외에도 Hapi와 Koa가 있지만 현재까지 가장 많이 사용되는 프레임워크는 익스프레스이다.

 

 익스프레스는 가볍고 유연하게 웹 프레임워크를 구성할 수 있는 장점이 있다. 이는 자바스크립트 코드로 작성된 다양한 기능의 미들웨어(Middleware) 덕분이다. 기존에 서버 구축을 위해 사용하던 http 모듈을 기본으로 내장하고 있으며 라우팅(Routing)이 용이하다. 

* Routing :  어떤 네트워크 안에서 통신 데이터(packet)를 보낼 최적의 경로를 선택하는 과정이다.

여기서 최적의 경로란 최단 거리 또는 가장 빠른 시간안에 데이터를 전달하는 것이다.

* Middleware : 응용 소프트웨어가 운영체제로부터 제공받는 서비스 이외에 추가적으로 이용할 수 있는 서비스를 제공하는 컴퓨터 소프트웨어이다.

 

 사용하기 위해서는 npm을 이용하여 별도로 설치해주어야 한다. 터미널에서 'npm install express --save'을 입력하여 설치하자. express를 사용할 프로젝트의 디렉토리에 설치하도록 하자. 설치가 완료되면 node_modules 폴더가 생성되고 이 곳에 express 모듈이 설치된다.

 

 준비가 다 끝났다면 이제 express를 이용하여 간단한 웹서버를 구현해보자. 

 

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

app.get('/', (req, res) => res.send('Hello Express!'));

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

 

 설치된 express 모듈을 임포트하여 서버 구현을 위해 내장된 애플리케이션을 불러왔다. 기존의 http 모듈을 사용할 때와는 다르게 app 객체 안에 서버가 자동으로 구축되어있다.

 

또한 URL 요청을 따로 파싱할 필요 없이 바로 요청 방식(GET, POST)에 따라 get(), post() 함수를 이용하여 경로에 따른 콜백 함수를 설정이 가능하여 라우팅에 용이하다. '(params) => logics'는 더욱 간단하게 콜백 함수를 정의하는 코드로 'function(params) {logics}'와 같은 의미이다.

 

 res(response) 객체에는 응답을 위한 함수가 여러가지 존재한다. 위에서는 간단하게 텍스트 응답을 위해 'send()'를 사용하였다.

 

· res.set() : 응답 헤더 설정
· res.send()
 : 다양한 유형의 응답 전송
· res.json() : json 응답을 전송
· res.render() : 뷰 템플릿(.jade)을 렌더링
· res.sendFile() : 파일의 내용을 클라이언트로 전송
· res.download() : 파일이 다운로드되도록 프롬프트
· res.redirect() : 요청의 경로를 재지정
· res.sendStatus() : 응답의 상태코드를 설정
· res.cookie() : 클라이언트에 저장될 쿠키를 설정하거나 제거. cookie-parser 모듈 필요
· res.end() : 응답 프로세스 종료

 req(request) 객체에는 요청을 처리하기 위한 여러가지 객체가 존재한다.

 

· req.params : 라우터의 파라미터를 담은 객체
· req.query : GET 방식으로 넘어오는 쿼리스트링 파라미터를 담은 객체
· req.body
: POST 방식으로 넘어오는 파라미터를 담은 객체
· req.route : 현재 라우트에 관한 정보. 디버깅용
· req.cookies : 클라이언트가 전달한 쿠키값
· req.headers : HTTP의 헤더 정보
Comments