Express Router 란 뭘까 ?

요한·2025년 9월 2일
0

node.js 를 사용하면서 Express라는 웹 프레임워크를 사용 할려고한다. 인텔리제이에서 제공하는 설명 덕분에 코드는 조금 더러워 보이지만 파리미터에 대한 자세한 내용을 잘 보여줘서 새로운 언어를 시작하는데 앞서 도움이된다!

Express

개념

Node.js 기반의 웹 애플리케이션 프레임워크, node.js 에서 http 서버를 직접 만들 수 있지만 코드가 길어지고 불편함 때문에 많은 곳에서 채택함

express (x)

const http = require('http');
const url = require('url');

const server = http.createServer((req, res) => {
  const parsedUrl = url.parse(req.url, true);

  if (req.method === 'GET' && parsedUrl.pathname === '/users') {
    res.writeHead(200, { 'Content-Type': 'application/json' });
    res.end(JSON.stringify({ message: "User list" }));
  } else if (req.method === 'POST' && parsedUrl.pathname === '/users') {
    res.writeHead(200, { 'Content-Type': 'application/json' });
    res.end(JSON.stringify({ message: "User created" }));
  } else {
    res.writeHead(404, { 'Content-Type': 'text/plain' });
    res.end("Not Found");
  }
});

server.listen(3000, () => {
  console.log("Server running at http://localhost:3000");
});

exrpess (o)

const express = require('express');
const app = express();

app.use(express.json()); // JSON 파싱 미들웨어

// GET /users
app.get('/users', (req, res) => {
  res.json({ message: "User list" });
});

// POST /users
app.post('/users', (req, res) => {
  res.json({ message: "User created" });
});

// 404 처리
app.use((req, res) => {
  res.status(404).send("Not Found");
});

app.listen(3000, () => {
  console.log("Express server running at http://localhost:3000");
});

아키텍처

출처 : MDN
https://developer.mozilla.org/en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/routes

  1. 클라이언트가 /user,/login,/signup 등 요청을 보낸다.
  2. Routes 가 받아 Controller 매핑 해주는 역활이다.
  3. db 에 접근해서 읽고 쓰기를 한다.
  4. Controller에게 다시 보내주며 응답에 view 를 꾸며준다.

사용방법

mdn 공식문서

// wiki.js - Wiki route module.

const express = require("express");
// express import
const router = express.Router();
// express 참조해서 Router 가져옴
// Home page route.
router.get("/", (req, res) => {
  res.send("Wiki home page");
});
// 리소스 "/" 접근해서 req = request, res = response 
// 응답을 보낸다 "wiki home page"

// About page route.
router.get("/about", (req, res) => {
  res.send("About this wiki");
});

module.exports = router;

인텔리제이 기본 세팅

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});


module.exports = router;

의문점 🤔

쓰는것은 비슷해보이는데 render 와 send 는 무슨 차이일까 ?

send 와 render 차이점

메서드설명Spring 개념예시
res.send()데이터 자체를 응답 (문자열, JSON, HTML 조각)@RestController + ResponseEntityres.send({id:1})
res.render()템플릿(Views)을 HTML로 변환해서 응답@Controller + JSP/Thymeleafres.render("index", {user:"yohan"})

그래서 view가 있는 인텔리제이에서 render를 사용했구나!


글 읽어주셔서 감사합니다! : )

profile
코드 깍는 개발자 kangyohan.dev.0421@gmail.com

0개의 댓글