Make server with express

zenibako.lee
5 min readOct 11, 2019

--

노드 익스프레스 패키지로 서버 만들기

Express

빠르고, 딱딱하지않은(unopinionated), 간편한

Node.js를 위한 웹 프레임워크

-> 간단하게 서버를 publish할 수 있는 도구들의 모음

설치방법

$ npm install express --save

node package manger를 이용해 다운로드 가능.

이 코드는 글 최하단에 위치한

express 공식문서의 예시이다.

const express = require('express')
// express module을 변수형태로 호출, 주소를 저장한다.
const app = express();
// 변수로 저장한 module을 이용해 express application을 생성한다.
const PORT = process.env.PORT || 3000;
// client가 접근 할 port number를 미리 지정한다.
//환경변수 PORT 혹은, 3000을 지정하도록 || 연산자를 사용
app.get('/', (req, res) => res.send('Hello World!'))
//express app의 get메소드를 활용 get method로 온
//client의 request의 응답으로,
//res(response)의 내용을 send()의 파라미터로 전달
//해당response를 전달하며 해당 connection을 종료한다.
app.listen(port, () => console.log(`Example app listening on port ${port}!`))// 위에서 지정한 port number를 통해 접근하는 request에 반응하도록 한다.
// 그 결과로 서버측 콘솔에 해당 string을 찍는다.
$ node app.js
//node.js로 app.js를 실행한다.
http://localhost:3000/ 으로 접근 시 확인 가능. (get 방식)

Chainable route handle

app.route('/messages').get(function (req, res) {console.log('method:get');res.status(200).sendFile(fileUrl);}).post(function (req, res) {.
.
console.log('saved!');
res.sendStatus(200);});

http:localhost:port/messages 로 get과 post요청이 올 경우,

route()내부에 두가지 쓰는 방식외에

먼저 접근 path를 나눠주고, method별로 처리를 할 수 있다.

그럴때, route()메소드를 통해 접근 path를 지정하고,

. [method Name]과 같은 방식으로 연결하면

해당 path로 들어온 request를 method별로 처리할 수 있다.

request.body

Node.js의 http server에서는

request가 갖고 있는 body내용을 접근,사용하려면

request.on('data',chunk=>{let someObj = JSON.parse(chunk)};orlet data = '';
data += chunk

과 같은 방식으로, <Buffer>클래스 instance로 전달되는

data를 parse해줘야 편하게 조작이 가능했다.

그러나,

Express가 이 부분을 매우 편하게 도와주는 메소드를 보유하고 있다.

.post(function (req, res) {let body = req.body;}

이 자체로, client에서 stringify해서 보내는 원본을 parsing된 상태로 바로 호출이 가능하다.

response.status(), response.sendFile()

기존 node.js에서 특정 statusCode를 send하려면,

아래와같이, writeHead를 통해 statusCode를 적시하고,

end나 send를 호출해야 했다.

response.writeHead(statusCode, headers);
or response.statusCode = 404;
return response.end();

그러나 Express에서는

res.status(statusCode)

를 통해, 상태코드만 바로 보낼 수 있다.

res.status(200).sendFile(fileUrl);

뿐만 아니라

그 뒤에 .sendFile()등과 같이 같이 보내줄 body내용을 바로 선언, 동작이 가능하다.

sendFile을 통해, url로 접근한 해당 파일을 보내 줄 수 있다.

.json파일이라면 매우매우 편리하다…

--

--

zenibako.lee
zenibako.lee

Written by zenibako.lee

backend engineer, JS, Node, AWS

No responses yet