• [Node.js] Express.js 서버 구축, 라우팅

    2023. 4. 5.

    by. 지은이: 김지은

    728x90

    Express란?

    Express.js는 Node.js의 가장 유명한 웹 프레임워크로 필요에 따라 유연하게 구조 설정이 가능하다.

    다양한 미들웨어를 통해 필요한 기능을 간단하게 추가 가능

     

    🔎 웹 프레임워크란? 

    웹: 웹 서비스에 필요한 기능들을 제공
    프레임워크: 다양한 도구들의 모음
    웹 서비스를 구성하기 위해서는 매우 많은 기능이 필요한데 프레임워크를 사용하면 정형화된 부분을 간단하게, 필요한 부분만 집중해서 개발할 수있다.

     

    Express 사용하기

    Express를 사용하기에 앞서 Node.js를 설치해야 서버 구축이 가능하다. (안정적인 LTS버전으로 설치하기)

    https://nodejs.org/ko

     

    Node.js

    Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

    nodejs.org

    npm init과 npm install express 명령어로 express 모듈 설치하기 (nodemon 모듈도 같이 사용하기)

     

    // express 모듈 불러오기
    const express = require("express");
    //app은 express.js 의 기능을 담은 객체
    const app = express();
    
    app.get("/", (req, res) => { // '/' 라우트 경로(기본)
      res.send("Hello World");
    });
    
    app.get("/about", (req, res) => {
      // /about 라우트에서 get 요청에 대한 응답
      res.send("Hello Express");
    });
    
    // http 서버를 생성해주는 함수
    app.listen(8080, () => {
      console.log("listening on 8080");
    });

     

    파일 보내기

    const express = require("express");
    const path = require("path"); // 경로 처리하기
    const app = express();
    
    app.get("/", (req, res) => {
      res.sendFile(path.join(__dirname, "./index.html")); // fs를 안 써도 fs모듈 사용
    });
    
    app.listen(8080, () => {
      console.log("listening on 8080");
    });

    현재 폴더에 있는 index.html을 보낼 수 있다.

     

    라우팅이란?

    HTTP요청에 따라 알맞은 응답을 보내주는 경로를 설정해주는 일

    크게 app 라우팅과 Express.Router를 통한 라우팅으로 나누어짐

     

    app 라우팅

    app 객체에 직접 get, post, put, delete 함수를 사용해서 HTTP 메서드로 라우팅 할 수 있다.

    all함수는 모든 메서드에 대한 라우팅 가능

     

    app.method(path 요청 경로, 콜백함수)

    app.get("/", (req, res) => {
      res.send("GET /");
    });
    app.post("/", (req, res) => {
      res.send("POST /");
    });
    app.put("/", (req, res) => {
      res.send("PUT /");
    });
    app.delete("/", (req, res) => {
      res.send("DELTE /");
    });
    app.all("/all", (req, res) => {
      res.send("ANY /");
    });

     

     

    Express.Router

    router객체에도 app객체처럼 get, put, post, delete 함수를 사용할 수 있다.

    app 메서드로 라우팅이 가능하지만, 라우팅할 경로가 많아지면 유지보수가 힘들고 코드가 길어지기 때문에 라우팅 모듈화가 필요할 수 있다.

    //라우팅 로직 별도 분리 ./users.js
    
    const express = require("express");
    //express가 가지고 있는 Router 메서드 호출
    const router = express.Router();
    
    router.get("/", (req, res) => {
      res.send("respond with a resource");
    });
    
    module.exports = router;

     

    작성된 라우터 모듈을 app에 use 함수로 연결하여 사용할 수 있다.

    router객체에도 하위 라우터를 use 함수로 연결 할 수 있다.

    // ./app.js
    
    const userRouter = require('./users');
    const app = express();
    
    app.use('/users', userRouter);
    
    module.exports = router;

    app.use()를 통해 디텍토리 접근하여 라우터 사용을 명시하기

     

    path parameter

    path parameter를 사용하면, 주소의 일부를 변수처럼 사용 가능하며 url 내에 일부 값을 동적으로 설정하고자 할 때 사용한다.

    ':' 을 이용해서 뒤에 변경되는 값(변수)를 넣어주면 된다.

    ex) user/:id , user/:abcd

     

    Refernece

    • 엘리스

     

     

    'Node.js' 카테고리의 다른 글

    [Node.js] path 모듈  (0) 2023.04.10
    [Node.js] Express 미들웨어란?  (0) 2023.04.06
    [Node.js] http 서버 만들기  (0) 2023.04.03
    [Node.js] 모듈 require(), Exports, Module.exports  (0) 2023.03.28
    Node.js 란?  (0) 2023.03.27

    댓글