728x90

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

- 요청의 본문을 해석해주는 미들웨어이다
- 폼 데이터나 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 |