express (middleware)

유석현(SeokHyun Yu)·2022년 12월 5일
0

Node.js

목록 보기
16/29
post-thumbnail

code

import express from "express";
import cors from "cors";
import cookieParser from "cookie-parser";
import morgan from "morgan";
import helmet from "helmet";

// 서버 생성
const app = express();

// express.json()
// json 형식(Content-Type: Application/json)의 req.body를 자바스크립트 객체로 파싱해주는 미들웨어
app.use(express.json());

// express.urlencoded()
// HTML form 형식(Content-Type: Application/x-www-form-urlencoded)의 req.body를 자바스크립트 객체로 파싱해주는 미들웨어
app.use(express.urlencoded({ extended: false }));

// express.static()
// 경로를 지정하고 그 경로에 존재하는 파일들은 url로 가져올 수 있게 해주는 미들웨어
app.use(express.static("public"));

// cors()
// 외부 미들웨어로 "npm i cors"를 통해 설치해야 한다
// CORS(Cross-Origin Resource Sharing) 정책을 손쉽게 다룰 수 있게 해주는 미들웨어
app.use(cors());

// cookieParser()
// 외부 미들웨어로 "npm i cookie-parser"를 통해 설치해야 한다
// header에 담겨있는 쿠키를 자바스크립트 객체로 파싱해주는 미들웨어
app.use(cookieParser());

// morgan()
// 외부 미들웨어로 "npm i morgan"를 통해 설치해야 한다
// 클라이언트에서 서버로 요청이 들어오면, 그 요청에 대한 http 메서드나 경로 등 다양한 정보를 콘솔에 출력하는 미들웨어
app.use(morgan("combined"));

// helmet()
// 외부 미들웨어로 "npm i helmet"를 통해 설치해야 한다
// 각종 보안 관련 설정을 해주는 미들웨어
app.use(helmet());

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

app.post("/", (req, res) => {
    res.send({ body: req.body, cookie: req.cookies });
});

// 8000포트로 서버 열기
app.listen(8000);

GET: http://localhost:8000

  • 기본 페이지
  • morgan()이 적용되어 터미널에 관련 정보들이 출력되는 것을 볼 수 있다.
  • cors()가 적용되어 응답 헤더에 Access-Control-Allow-Origin: *이 설정된 것을 볼 수 있다.
  • helmet()이 적용되어 응답 헤더에 X-Content-Type, X-DNS-Prefetch-Control 등이 설정된 것을 볼 수 있다.

POST: http://localhost:8000

  • 요청을 보낼 때 HeadersKEY를 "Cookie"로 설정해두고 VALUE에 쿠키로 설정해두고 싶은 값들을 "{key}={value}" 형태로 지정한다.
  • 세미콜론(;)으로 구분지어 여러개를 등록할 수도 있다.
  • cookieParser()가 적용되어 헤더에 담겨있는 쿠키가 객체로 파싱된 것을 볼 수 있다.
  • express.json()이 적용되어 json 형식의 body가 객체로 파싱된 것을 볼 수 있다.
  • 이 역시 morgan()이 적용되어 터미널에 관련 정보들이 출력되는 것을 볼 수 있다.
profile
Backend Engineer

0개의 댓글