본문으로 바로가기

chained route handlers

category Node, Nest, Deno/🚀 Node.js (+ Express) 2020. 7. 2. 15:44

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("/");
  }
};

darren, dev blog
블로그 이미지 DarrenKwonDev 님의 블로그
VISITOR 오늘 / 전체