Node/익스프레스 웹 서버 만들기

morgan, bodyParser, cookieParser 미들웨어

webmaster 2022. 9. 9. 23:42
728x90

 

morgan, cookie-parser, express-session

const express = require("express");
const path = require("path");
const app = express();
const morgan = require("morgan");
const cookieParser = require("cookie-parser");

app.set("port", process.env.PORT || 3000);

app.use(morgan("dev")); //요청과 응답을 기록하는 라우터, 운영에서는 combined 사용
//app.use(morgan("combined"));
app.use(cookieParser());
app.use(cookieParser("junhokimpassword"));
app.use(express.json()); //client -> server
app.use(express.urlencoded({ extended: true })); //true면 qs, false면 querystring

app.get("/", (req, res, next) => {
  console.log(req.cookies);
  console.log(req.signedCookies); //암호화된 쿠키(서명된 쿠키)
  console.log(req.body);

  res.cookie("name", encodeURIComponent(name), {
    expires: new Date(),
    httpOnly: true,
    path: "/"
  });
  res.clearCookie("name", encodeURIComponent(name), {
    httpOnly: true,
    path: "/"
  });
  res.sendFile(path.join(__dirname, "index.html"));
});

app.post("/", (req, res, next) => {
  res.send("hello express!");
});

app.get("/category/:name", (req, res) => {
  res.send(`hello wildcard`);
});
app.get("/category/javascript", (req, res) => {
  res.send(`hello ${req.params.name}`);
});

app.get("/about", (req, res) => {
  res.send("hello express");
});

app.use((req, res, next) => {
  res.status(404).send("404지요");
});
app.use((err, req, res, next) => {
  console.error(err);
  res.status(200).send("에러처리 미들웨어, 상태코드는 안알려준다");
});
app.listen(app.get("port"), () => {
  console.log("익스프레스 서버 실행");
});
  • morgan, cookie-parser, express-session 설치한다
  • app.use로 장착한다
  • 내부에서 알아서 next를 호출해서 다음 미들웨어로 넘어간다

morgan

  • 서버로 들어온 요청과 응답을 기록해주는 미들웨어이다
  • 로그의 자세한 정도 선택 가능하다(dev, tiny, short, common, combined)
    • 예시) GET / 200 51.267 ms – 1539, GET / 500 1.081 ms - 26...
  • 순서대로 HTTP 요청 요청 주소 상태 코드 응답속도 – 응답 바이트
  • 개발환경에서는 dev, 배포 환경에서는 combined를 애용함.

cookie-parser

  • 요청 헤더의 쿠키를 해석해주는 미들웨어
  • parseCookies 함수와 기능 비슷하다.
  • req.cookies 안에 쿠키들이 들어있다.
  • 비밀 키로 쿠키 뒤에 서명을 붙여 내 서버가 만든 쿠키임을 검증할 수 있다
  • 실제 쿠키 옵션들을 넣을 수 있다.
    • expires, domain, httpOnly, maxAge, path, secure, sameSite 등
  • 지울 때는 clearCookie(expires maxAge 제외한 옵션들이 일치해야 한다) 지울 수 있다

body-parser

body-parser

  • 요청의 본문을 해석해주는 미들웨어이다
  • 폼 데이터나 AJAX 요청의 데이터 처리한다
  • json 미들웨어는 요청 본문이 json인 경우 해석, urlencoded 미들웨어는 폼 요청 해석한다
  • put이나 patch, post 요청 시에 req.body에 프런트에서 온 데이터를 넣어준다
  • raw(), text()는 거의 사용하지 않기 때문에 express에 포함되지 않았다 -> 사용하기 위해서는 위처럼 추가해야 된다

 

 

 

728x90

'Node > 익스프레스 웹 서버 만들기' 카테고리의 다른 글

dotenv 사용하기  (0) 2022.09.10
멀티파트 데이터 형식  (0) 2022.09.10
static,express-session 미들웨어  (0) 2022.09.10
미들웨어  (0) 2022.09.09
express 서버 사용해보기  (0) 2022.09.09