Router(1)개발/Node.js2024. 10. 24. 10:15
Table of Contents
1. Router
https://expressjs.com/en/api.html#router
- Router는 Controller와 URL을 관리
- You can think of it as a “mini-application”
- 작업중인 주제를 기반으로 URL을 그룹화
# URL
# Global
/ -> Home
/join - Join
/login -> Login
/search -> Search
# User
/user/edit -> Edit User
/user/delete -> Delete User
# Videos
/videos/watch - > Watch vidoo
/videos/edit -> Edit video
/videos/delete -> Delete video
/videos/comment -> Comment on a video
/videos/comment/delete -> Delete a comment of a video
2. Router 만들기
// server.js
const express = require("express");
const morgan = require("morgan");
const PORT = 4000;
const app = express();
app.use(morgan("dev"));
const globalRouter = express.Router();
const handleHome = (req, res) => res.send("Home");
globalRouter.get("/", handleHome);
const userRouter = express.Router();
const handleEditUser = (req, res) => res.send("Edit User");
userRouter.get("/edit", handleEditUser);
const videoRouter = express.Router();
const handleWatchVideo = (req, res) => res.send("Watch Video");
videoRouter.get("/watch", handleWatchVideo);
app.use("/", globalRouter);
app.use("/videos", videoRouter);
app.use("/users", userRouter);
const handleListening = () =>
console.log(`Server listening on port http://localhost:${PORT} 👍`);
app.listen(PORT, handleListening);
3. 코드 정리
- 처음에는 완성을 위해 코드를 개판으로 짜더라도 그 이후엔 필수로 코드를 정리하는 과정이 필요
- 앞서 Router를 만들었지만 이제는 Controller와 Router로 나눔
- src/routers 폴더를 만들고 각각의 Router.js 파일을 생성
- 참고로 모든 javascript는 각자의 개성이 있으므로 모든 파일에서 import 해야함
- 모든 파일들은 하나의 모듈이며 독립되어 있으므로 하나의 파일에서도 구동이 되는 코드로 구현해야함
// globalRouter.js
// user와 video Router 파일도 동일
import express from "express";
const globalRouter = express.Router();
const handleHome = (req, res) => res.send("Home");
globalRouter.get("/", handleHome);
- 하지만 server.js에선 다른 파일로 가버린 Router을 인식할 수 없으므로 import 해야 사용 가능
- 각 Router에서 export 해야 사용 가능하며 파일을 통채로 사용하기보단 Router만 사용하고 싶음
4. Export
// globalRouter.js
// 최하단에 추가
// default로는 1개만 가능
export default globalRouter;
// server.js
import globalRouter from "./routers/globalRouter";
import videoRouter from "./routers/videoRouter";
import userRouter from "./routers/userRouter";
'개발 > Node.js' 카테고리의 다른 글
전반적인 Router 구성하기 (0) | 2024.10.25 |
---|---|
Router(2) (0) | 2024.10.24 |
Error: Cannot set headers after they are sent to the client (0) | 2024.10.23 |
Middleware (0) | 2024.10.23 |
Express 서버 생성(3) (0) | 2024.10.22 |