๐Ÿ˜Ž ๊ณต๋ถ€ํ•˜๋Š” ์ง•์ง•์•ŒํŒŒ์นด๋Š” ์ฒ˜์Œ์ด์ง€?

[Express ์›น ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ] (3) Router ๊ฐ์ฒด๋กœ ๋ผ์šฐํŒ… ๋ถ„๋ฆฌํ•˜๊ธฐ ๋ณธ๋ฌธ

๐Ÿ‘ฉ‍๐Ÿ’ป ๋ฐฑ์—”๋“œ(Back-End)/Node js

[Express ์›น ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ] (3) Router ๊ฐ์ฒด๋กœ ๋ผ์šฐํŒ… ๋ถ„๋ฆฌํ•˜๊ธฐ

์ง•์ง•์•ŒํŒŒ์นด 2023. 4. 27. 00:24
728x90
๋ฐ˜์‘ํ˜•

<๋ณธ ๋ธ”๋กœ๊ทธ๋Š” Node.js ๊ต๊ณผ์„œ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค :-)>

 

๐ŸŽ€ Router ๊ฐ์ฒด ์‚ฌ์šฉํ•˜๊ธฐ

๐ŸŒˆ index ์™€ user ๋ถ„๋ฆฌํ•˜๊ธฐ

 

๐ŸŒˆ routes/user.js

const express = require("express");
const router = express.Router();

// GET / ๋ผ์šฐํ„ฐ
router.get("/", (req, res) => {
    res.send("Hello, Express");
});

module.exports = router;

 

๐ŸŒˆ routes/user.js

const express = require("express");
const router = express.Router();

// GET / user ๋ผ์šฐํ„ฐ
router.get("/", (req, res) => {
    res.send("Hello, User");
});

module.exports = router;

 

๐ŸŒˆ app.js

// express : http ๋ชจ๋“ˆ ๋‚ด์žฅ๋˜์–ด์„œ ์„œ๋ฒ„์˜ ์—ญํ• 
const express = require("express");
const app = express();
// process.env ๊ด€๋ฆฌ
const dotenv = require("dotenv");
// ๋ฏธ๋“ค์›จ์–ด
const cookieParser = require("cookie-parser");
const session = require("express-session");
const morgan = require("morgan");
const multer = require("multer");
const fs = require("fs");
// ํŒŒ์ผ ๊ฒฝ๋กœ
const path = require("path");
const { fstat } = require("fs");
require("dotenv").config();
// Router
const indexRouter = require("./routes/index");
const userRouter = require("./routes/user");

dotenv.config();
// ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰๋  ํฌํŠธ
// app.set("ํ‚ค, ๊ฐ’") : ๋ฐ์ดํ„ฐ ์ €์žฅ
app.set("port", process.env.PORT || 8000);

// dev : [HTTP ๋ฉ”์„œ๋“œ][์ฃผ์†Œ][HTTP ์ƒํƒœ ์ฝ”๋“œ][์‘๋‹ต ์ฝ”๋“œ]-[์‘๋‹ต ๋ฐ”์ดํŠธ]
app.use(morgan("dev"));
app.use("/", express.static(path.join(__dirname, "public")));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser(process.env.COOKIE_SECRET));
app.use(session({
  // ์š”์ฒญ์ด ์˜ฌ ๋•Œ ์„ธ์…˜์— ์ˆ˜์ • ์‚ฌํ•ญ์ด ์ƒ๊ธฐ์ง€ ์•Š๋”๋ผ๋„ ๋‹ค์‹œ ์ €์žฅํ• ์ง€ ์„ค์ •
  resave: false,
  // ์„ธ์…˜์— ์ €์žฅํ•  ๋‚ด์—ญ์ด ์—†๋”๋ผ๋„ ์ฒ˜์Œ๋ถ€ํ„ฐ ์„ธ์…˜์„ ์ƒ์„ฑํ• ์ง€ ์„ค์ •
  saveUninitialized: false,
  // ์ฟ ํ‚ค๋ฅผ ์„œ๋ช…ํ•˜๋Š”๋ฐ secret ๊ฐ’ ํ•„์š”
  secret: process.env.COOKIE_SECRET,
  // tptus znzldp eogks tjfwjd
  cookie: {
    // ํด๋ผ์ด์–ธํŠธ์—์„œ ์ฟ ํ‚ค ํ™•์ธ ๋ชปํ•จ
    httpOnly: true,
    // https ๊ฐ€ ์•„๋‹Œ ํ™˜๊ฒฝ์—์„œ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    secure: false,
    // => ๋ฐฐํฌ์‹œ https ์ ์šฉ true ์„ค์ •์ด ์ข‹์Œ
  },
  name: "session-cookie",
}));

app.use("/", indexRouter);
app.use("/user", userRouter);

app.use((req, res, next) => {
  res.status(404).send("Not found");
});

// ๋ฏธ๋“ค์›จ์–ด : ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์กฐ์ •
// ์š”์ฒญ, ์‘๋‹ต, ๋‹ค์Œ ๋ฏธ๋“ค์›จ์–ด๋กœ ๋„˜์–ด๊ฐ€๊ธฐ
app.get("/upload", (req, res) => {
  res.sendFile(path.join(__dirname, "multipart.html"));
});

app.post("/upload",
  upload.fields([{ name: "image1" }, { name: "image2" }]),
  (req, res) => {
    console.log(req.filies, req.body);
    res.send("ok");
  },);
app.use((req, res, next) => {
  console.log("๋ชจ๋“  ์š”์ฒญ์— ๋‹ค ์‹คํ–‰๋จ");
  next();
});

app.get("/", (req, res, next) => {
  console.log("GET / ์š”์ฒญ์—์„œ๋งŒ ์‹คํ–‰");
  next();
}, (req, res) => {
  throw new Error("์—๋Ÿฌ๋Š” ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋ฏธ๋“ค์›จ์–ด๋กœ ๊ฐ„๋‹ค");
});

app.use((err, req, res, next) => {
  console.error(err);
  res.status(500).send(err.message);
});

// HTTP ์›น ์„œ๋ฒ„์™€ ๋™์ผ
app.listen(app.get("port"), () => {
  console.log(app.get("port"), "๋นˆ ํฌํŠธ์—์„œ ๋Œ€๊ธฐ์ค‘");
});

 

 

728x90
๋ฐ˜์‘ํ˜•
Comments