[NodeJS] Routing

이애진·2022년 7월 14일

Node

목록 보기
1/12
post-thumbnail

매우 기본적인 라우트의 예시를 먼저 살펴본다

import express from "express";
import dotenv from "dotenv";

dotenv.config({path: __dirname + "/.env"});

const PORT: string | number = process.env.PORT || 3000;
const app = express();

app.get("/", (req: express.Request, res: express.Response, next: NextFunction): any => {
    res.send("Hello world!");
});

app.listen(PORT, () => console.log("Running on TS-Express Server"))
    .on("error", (err) => { throw new Error(`${err.name}: ${err.message}`) });

express는 http 메소드에 해당하는 라우팅 메소드를 지원한다

get, post, put, delete, ...

또한 경로 지정할 때 정규식을 사용해 경로를 지정할 수 있다


Router Refactoring

app.use("/auth", authRouter);
app.use("/main", mainRouter);

router를 사용할 때 보통 위처럼 여러 라우터를 사용하지만 index.js or app.js 에 보통 한 번에 넣지 않고 기본적인 환경설정을 담당하는 파일로만 사용하기 때문에 대부분 root router를 생성해서 사용한다

routers/index.ts

import express, { Request, Response, ErrorRequestHandler } from "express";

import authRouter from "./auth";
import mainRouter from "./main";

const rootRouter = express.Router();

rootRouter.get("/", (req: Request, res: Response) => {
    res.render("main");
});

rootRouter.use("/auth", authRouter);
rootRouter.use("/main", mainRouter);

rootRouter.use(((err, req, res, next) => {
    res.status(500).send(err);
}) as ErrorRequestHandler);
  
export default rootRouter;

index.ts

import express from "express";
import dotenv from "dotenv";

import { PORT } from "./const";
import rootRouter from "./routers";

dotenv.config();

const app: express.Application = express();

app.set("view engine", "pug");
app.set("views", __dirname + "\\views");

app.use(express.urlencoded({ extended: false }));
app.use(express.json());

app.use("/", rootRouter);

app.listen(PORT, () => console.log("Running on TS-Express Server")).on("error", (err) => {
        throw new Error(`${err.name}: ${err.message}`);
});
profile
Frontend Developer

0개의 댓글