http://expressjs.com/en/guide/routing.html#route-methods
http://expressjs.com/en/4x/api.html#router
router.route(path) 를 활용할 것이다.
Returns an instance of a single route which you can then use to handle HTTP verbs with optional middleware. Use router.route() to avoid duplicate route naming and thus typing errors.
아래와 같은 라우터가 있다고 하자.
movieRouter.get("/add", add)
movieRouter.post("/post", add)
로 치면 redundant, 즉 필요 없는 중복적인 타이핑을 처리해야만 한다. 이를 편히 줄인 방법이 다음과 같다.
movieRouter.route("/add").get(add).post(add)
대신 해당 라우트에 접속할 때 작동하는 컨트롤러 함수에서 method 체크를해줘야 한다.
아래 통 예시를 보자
import express from "express";
import { home, movieDetail, add } from "./movieController";
const movieRouter = express.Router();
movieRouter.get("/", home);
movieRouter
.route("/add")
.get(add)
.post(add);
movieRouter.get("/:id", movieDetail);
export default movieRouter;
export const add = (req, res) => {
if (req.method === "GET") {
return res.render("add", { pageTitle: "Add Movie" });
} else if (req.method === "POST") {
const {
body: { title, genres, synopsis }
} = req;
addMovie({ title, synopsis, genres: genres.split(",") });
return res.redirect("/");
}
};
'Node, Nest, Deno > 🚀 Node.js (+ Express)' 카테고리의 다른 글
[koa] KOA 백엔드의 라우팅 폴더 구조 (0) | 2020.07.30 |
---|---|
[koa] koa 살펴보기 (0) | 2020.07.29 |
sharp를 활용한 image resizing + buffer 이해하기 (0) | 2020.06.29 |
express-flash 사용 (0) | 2020.06.22 |
res.locals 활용하여 전역에서 사용 가능한 변수 만들기 (0) | 2020.06.17 |