티스토리 뷰

728x90

오늘은 expressJS를 공부하기 위해서 공식 홈페이지에 존재하는 안내서를 정독 및 실습해보았다.

해당 포스트에는 이것을 진행하면서 알게된 사실이나 내용을 정리하고자한다.


시작

나는 안내서를 실습하기 위해 express-generator를 통해 express 기본 틀을 생성하였다.
express-generator를 설치했다면 아래와 같은 명령어를 통해 쉽게 생성할 수 있다.

express --view=pug myapp

라우팅

라우팅은 URI(또는 경로) 및 특정한 HTTP 요청 메소드(GET, POST 등)인
특정 엔드포인트에 대한 클라이언트 요청에 애플리케이션이 응답하는 방법을 결정하는 것을 말합니다.
각 라우트는 하나 이상의 핸들러 함수를 가질 수 있으며, 이러한 함수는 라우트가 일치할 때 실행됩니다.
자료 : https://www.expressjs.com/

라우팅 예시

app.get("/", function (req, res) {
  res.send("Hello world!!!");
});

app.get("/:name", function (req, res) {
  res.send(`이와 같이 URL의 name을 인자로 불러올 수 있다. ${req.params.name}`);
});

미들웨어

미들웨어 함수는 요청 오브젝트(req), 응답 오브젝트 (res),
그리고 애플리케이션의 요청-응답 주기 중 그 다음의 미들웨어 함수 대한 액세스 권한을 갖는 함수입니다.
그 다음의 미들웨어 함수는 일반적으로 next라는 이름의 변수로 표시됩니다.

미들웨어 예시

router.get(
  "/:name",
  function (req, res, next) { // 1번 함수
    if (req.params.name === "111") {
      next("route"); // 해당 표현을 2번 함수를 지나갈 수 있다.
    } else {
      next();
    }
  },
  function (req, res) { // 2번 함수
    res.send(`hello ${req.params.name}!!`); // 요청-응답 주기를 종료시키기 때문에 아래에 있는 get 함수가 실행되지 않는다.
  }
);

router.get("/:name", function (req, res) {
  res.send(`That's not correct!!!`);
});

express.Router

express.Router 클래스를 사용하면 모듈식 마운팅 가능한 핸들러를 작성할 수 있습니다.
Router 인스턴스는 완전한 미들웨어이자 라우팅 시스템이며,
따라서 “미니 앱(mini-app)”이라고 불리는 경우가 많습니다.

express.Router 예시

// app.js
var testRouter = require("./routes/test");
...
app.use("/test", testRouter);

// test.js
var express = require("express");
var router = express.Router();

router.get("/", function (req, res) {
  res.send("Hello world!!!");
});

...

module.exports = router;

참고

https://www.expressjs.com

댓글
최근에 올라온 글
최근에 달린 댓글
링크