Home Node Express Module
Post
Cancel

Node Express Module

Express



꼭 알아둘 개념!

개념설명
express 모듈http 모듈처럼 사용할 수 있지만 더 많은 기능이 있는 외부 모듈입니다.
미들웨어express 모듈 use() 메소드의 매개변수에 입력하는 함수를 말합니다.
router페이지 라우팅을 지원하는 미들웨어 입니다.
morgan웹 요청이 들어왔을 때 로그를 출력합니다.
cookie parser요청 쿠키를 추출합니다.
connnect-multipartymultipart/form-data 인코딩 방식을 사용해 POST 요청 데이터를 추출합니다.
express-session세션을 쉽게 생성할 수 있게 도와줍니다.



기본 서버 설정

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// 예시 1
let express = require('express')
let app = express();

// requst 이벤트 리스너를 설정합니다.
app.use((req, res) => {
    res.writeHead(200, {'Content-type' : 'text/html'})
    res.end(`<h1> Hello Express</h1>`)
)}

// 서버를 실행 합니다.
app.listen(8080, () => {
    console.log('Server Running http://127,0.0.1:8080')
})

// 예시2

let http = require('http')
let express = require('express');

let app = express()

http.createServer(app).listen(8080, () => {
    console.log('Server Running http://127,0.0.1:8080')
})




기본 응답 메소드

메소드 이름설명
response.send()매개변수의 자료형에 따라 적절한 형태로 응답합니다.
response.json()JSON 형태로 응답합니다.
response.jsonp()JSONP 형태로 응답합니다.
response.redirect()웹 페이지 경로를 강제로 이동시킵니다.




send() 메소드를 사용한 JSON 전달

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
let express = require("express");

let app = express();

app.use((req, res) => {
  let output = [];
  for (let i = 0; i < 3; i++) {
    output.push({
      count: i,
      name: "name -" + 1,
    });
  }
  res.send(output);
});

app.listen(8080, () => {
  console.log("Server Running at http://127.0.0.1:8080");
});




기본 요청 메소드

메소드 이름설명
params라우팅 매개변수를 추출합니다.
query요청 매개변수를 추출합니다.
headers요청 헤더를 추출합니다.
header()요청 헤더의 속성을 지정 또는 추출합니다.
is(type)요청헤더의 Content-type 속성을 확인 합니다.




요청 헤더의 속성 추출

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
let express = require("express");

let app = express();

app.use((req, res) => {
  // User-Agent 속성을 추출합니다.
  let agent = req.header("User-Agent");
  console.log(req.headers);
  console.log(agent);
  res.sendStatus(200);
});

app.listen(8080, () => {
  console.log("Server Running at http://127.0.0.1:8080");
});




router 미들웨어

  • express 모듈은 페이지 라우팅을 지원합니다.
  • 페이지 라우팅은 클라이언트 요청에 적절한 페이지를 제공하는 기술입니다.

app 객체의 메소드

메소드 이름설명
get(path, callback, [callback])GET 요청이 발생했을 때의 이벤트 리스너를 지정합니다.
post(path, callback, [callback])POST 요청이 발생했을 때의 이벤트 리스너를 지정합니다.
put(path, callback, [callback])PUT 요청이 발생했을 때의 이벤트 리스너를 지정합니다.
delete(path, callback, [callback])DELETE 요청이 발생했을 때의 이벤트 리스너를 지정합니다.
all(path, callback, [callback])모든 요청이 발생했을 때의 이벤트 리스너를 지정합니다.



router 미들웨어 예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
let express = require('express')
let app = express()

//라우터를 설정합니다.
app.get('/a', (req, res) => {
    res.send('<a href='/b'>GO TO B</a>')
})

app.get('/b', (req, res) => {
    res.send('<a href='/b'>GO TO A</a>')
})

app.listen(8080, () => {
    console.log("Server Running at http://127.0.0.1:8080");
})

router 모듈화

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
let express = require("express");
let app = express();

//라우터를 생성합니다.
let routerA = express.Router();
let routerB = express.Router();

//라우터 A를 설정합니다.
routerA.get("/index", (req, res) => {
  res.send("<h1> INDEX PAGE </h1>");
});

//라우터 B를 설정합니다.
routerB.get("/index", (req, res) => {
  res.send("<h1> INDEX PAGE </h1>");
});

// 라우터를 설정합니다.
app.use("/a", routerA);
app.use("/b", routerB);

app.listen(8080, () => {
  console.log("Server Running at http://127.0.0.1:8080");
});
  • 이렇게 설정하면 routerA는 /a/index 경로에 페이지를 생성 하며 routerB는 /b/index 경로에 페이지를 설정하게 됩니다.




  • cookie parser 미들웨어는 요청 쿠키를 추출하는 미들웨어 입니다.
  • request, response 객체에 cookie 속성과 cookie() 메소드가 부여됩니다.
  • npm install cookie-parser 명령어로 설치합니다.
  • cookie() 메소드의 세 번째 매개변수에는 다음과 같이 옵션을 줄 수 있습니다.


1
2
3
4
res.cookie("string", "cookie", {
  maxAge: 600,
  secure: true,
});


쿠키의 메소드 옵션 속성

속성 이름설명
httpOnlydocument.cookie를 활용해 쿠키를 조작 할 수 없도록 합니다.
securehttps 통신에서만 쿠키에 접근 할 수 있습니다.
expires쿠키의 유효기간을 설정합니다.
Max-Age얼마동안 유지할것인지 설정합니다.
Domain브라우저가 쿠키값을 전송할 서버의 도메인을 지정합니다.
Path브라우저가 쿠키값을 전송할 URL을 지정합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
let express = require("express");
let cookieParser = require("cookie-parser");

let app = express();

// 미들웨어를 설정합니다.
app.use(cookieParser());

// 라우터를 설정합니다.
app.get("/getCookie", (req, res) => {
  res.send(req.cookies);
});

app.get("/setCookie", (req, res) => {
  //쿠키를 생성합니다.
  res.cookie("string", "cookie");
  res.cookie("json", {
    name: "cookie",
    property: delicious,
  });
  //응답합니다.
  res.redirect("/getCookie");
});

app.listen(8080, () => {
  console.log("Server Running at http://127.0.0.1:8080");
});




express-session 미들웨어

  • 쿠키가 클라이언트의 웹 브라우저 정보를 저장하는 것이라면 세션은 서버에 정보를 저장합니다.
  • 세션은 클라이언트에 세션 식별자 쿠키를 부여합니다
  • npm install express-session 명령어로 설치합니다.

session() 메소드의 옵션

session 메소드의 매개변수 메소드

메소드 이름설명
name쿠키의 name 속성을 지정합니다.
store세션 저장소를 지정합니다.
cookie생성할 cookie 와 관련된 정보를 지정합니다.
secret비밀 키를 지정합니다.
resave세션이 변경되지 않았어도 세션 저장소에 resave할지 설정합니다.
saveUnitialized초기화 되지 않은 세션을 저장소에 저장할지 설정

session 객체의 메소드

regenerate()세션을 다시 생성합니다.
destroy()세션을 삭제 합니다.
reload()세션을 다시 불러옵니다.
save()세션을 저장합니다.




session 미들웨어 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
let express = require('express')
let session = require('express-session')

let app = express()

// 미들웨어를 설정합니다.
app.use(session({
    secret : 'secret key'
    resave : false,
    saveUnitialized : true,
    cookie : {
        maxAge : 60 * 1000
    }
}))

app.use(8080, (req, res) => {
    //  console.log("Server Running at http://127.0.0.1:8080");
})

This post is licensed under CC BY 4.0 by the author.