Sparta/스파르타코딩 웹개발 종합반

Node.js - 02 - 미들웨어 (express.js) & Routing

또롱또 2022. 3. 16. 12:03
728x90

미들웨어

- 미들웨어를 통해 웹 서버의 요청/응답에 대해 공통적으로 관리가 가능

- 미들웨어는 서버에 부착된 기능. 

express.js 의 미들웨어

- urlencoded: form-urlencoded 라는 규격의 body 데이터를 손쉽게 코드에서 사용할 수 있게 도와주는 미들웨어에요!

- json: JSON 이라는 규격의 body 데이터를 손쉽게 코드에서 사용할 수 있게 도와주는 미들웨어에요!

ex) json 미들웨어가 없으면 우리 서버에서는 json을 사용할수없다. 

미들웨어 작성하기 (express)

app.use((req, res, next) => {
  // 필요한 코드
});



// 예제
app.use((req, res, next)=>{
    console.log('미들웨어가 구현됬나?')
    next(); // 다음 미들웨어로 넘어간다, 만약 이게 없을경우 새로고침시 무한로딩에 걸린다.
});

next() 다음 스택으로 정의된 미들웨어를 호출

아래는 미들웨어가 불릴때마다, 시간을 불러오는 코드 (미들웨어 불릴때 로그 남기기)

// 함수를 변수에 저장
const requestMiddleware = (req, res, next) => {
    console.log('Request URL:', req.originalUrl, ' - ', new Date());
    next();
};

// 미들웨어 호출
app.use(requestMiddleware);

Routing/Router

Routing은 클라이언트의 요청 조건(메서드, 주소 등)에 대응해 응답하는 방식

Express.js 에서의 Router는 클라이언트의 요청을 쉽게 처리 할 수 있게 도와주는 Express.js 기본 기능중 하나

 

// Router 예제
const express = require("express");
const router = express.Router();

router.get("/", (req, res)=> {
    res.send("This is Root Page");
    console.log("avc")
})

router.get("/goods", (req, res) => {
    res.send("This is Goods Page");
})

module.exports = router; // 라우터 변수를 모듈로서 내보낸다, 이게 있어야지 다른 js 파일에서 import가 가능하다.

Router를 main.js에서 부르는 방법

const goodsRouter = require("./routes/goods"); // import 해야한다.
app.use("/api", [goodsRouter]) // 이런식으로 사용, goodsRouter, goodsRouter2 처럼 여러개도 가능

Router와 미들웨어는 서로 다른 방식처럼 보이지만 Router는 미들웨어 기반으로 구현된 객체이므로 미들웨어와 동일한 방식으로 작동

728x90