1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48import cors from "cors";
import express from "express";
import {
viewsRouter,
userRouter,
orderRouter,
productRouter,
adminRouter,
categoryRouter,
} from "./routers";
import { errorHandler } from "./middlewares";
import dotenv from "dotenv";
import morgan from "morgan";
import { accessLogStream } from "./config/log";
const app = express();
dotenv.config();
// CORS μλ¬ λ°©μ§
app.use(cors());
// Content-Type: application/json ννμ λ°μ΄ν°λ₯Ό μΈμνκ³ νΈλ€λ§ν μ μκ² ν¨.
app.use(express.json());
// Content-Type: application/x-www-form-urlencoded ννμ λ°μ΄ν°λ₯Ό μΈμνκ³ νΈλ€λ§ν μ μκ² ν¨.
app.use(express.urlencoded({ extended: false }));
app.use(morgan("dev"));
app.use(
morgan(":date[iso] :method :status :response-time :url :referrer", {
stream: accessLogStream,
})
);
// html, css, js λΌμ°ν
app.use(viewsRouter);
// api λΌμ°ν
// μλμ²λΌ νλ©΄, userRouter μμ '/login' μΌλ‘ λ§λ κ²μ΄ μ€μ λ‘λ μμ /apiκ° λΆμ΄μ
// /api/login μΌλ‘ μμ²μ ν΄μΌ νκ² λ¨. λ°±μλμ© λΌμ°ν
μ ꡬλΆνκΈ° μν¨μ.
app.use("/api/admin", adminRouter);
app.use("/api", userRouter);
app.use("/api/order", orderRouter);
app.use("/api/product", productRouter);
app.use("/api/category", categoryRouter);
// μμ μ€μ (errorHandlerμ λ€λ₯Έ μΌλ° λΌμ°ν
λ³΄λ€ λμ€μ μμ΄μΌ ν¨)
// κ·ΈλμΌ, μλ¬κ° λ¬μ λ next(error) νμ λ μ¬κΈ°λ‘ μ€κ² λ¨
app.use(errorHandler);
export { app };