Framework/Express

1. express router 사용하기

oniri1 2024. 9. 12. 01:39

router란 express에서 경로와 요청을 체계적으로 관리하기 위해 사용한다.
express를 다운받았다면 딱히 다른 라이브러리가 필요하진 않다.

router.js를 작성해보자

import { Router } from "express";
const router = Router();


//router.레스트풀api("경로", 콜백함수); // restful api로 쓰면 헷갈릴까봐 한글로 적었다. get,post,patch,delete등 전부 사용할 수 있다.

router.get("/", (req,res)=>{
//기본적으로 req(받은 요청의 정보를 가진다)
//req.params: URL 경로에서 전달된 매개변수
//req.query: URL에서 쿼리 스트링으로 전달된 데이터
//req.body: POST, PUT 요청의 데이터를 가지고 있어 주로 사용한다.
//req.headers: 요청의 헤더 정보
//req.method: 요청의 HTTP 메서드를 확인
//req.url: 요청된 URL

//res(요청이 온 주소로 다시 보내기 위한 정보들을 가진다)
//res.send(): 응답(기본 status 200)을 보내고 연결을 종료
//res.json(): JSON 형식으로 응답을 보낸다. ({name:value})로 json 값을 보내줄 수 있다.
//res.status(): 응답 상태 코드를 설정이다. 응답을 보내는 명령어가 아니다. 바꾸고 json이든 send든 보내줘야한다..
//res.redirect(): 다른 URL로 리다이렉션 (클라이언트에서 주소가 바뀐다.)
  console.log("안녕")
  res.send()
});

export default router;

res로 send나 json으로 무언갈 보내주지 않으면 클라이언트는 요청을 계속 기다리게 된다.
이전 글에 선택사항으로 해놨던 promise 타임아웃을 설정했다면 클라에서 알아서 응답을 끊긴하지만..

대충 이렇게 router를 설정했다면, server.js에 router를 추가해보자

import router from "./라우터 주소";

app.use("/api", router);

이제 서버에 요청이 /api로 들어오게 된다면, router 쪽으로 넘겨주게 된다.

localhost:3010/api 로 get 메서드를 보내면 서버 로그에 안녕이 찍혀있을 것이다.
클라이언트에는 당연히 받은게 send() 뿐이니 그저 응답을 받았다는 status 코드인 200이 찍혀있을거다.