Make server with express
노드 익스프레스 패키지로 서버 만들기
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파일이라면 매우매우 편리하다…