Super Kawaii Cute Cat Kaoani
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
{Extracurricular Activities}/Codeit Boost-Node.js

9์ฃผ์ฐจ ์Šคํ„ฐ๋”” Express ํ•ต์‹ฌ ๊ธฐ๋Šฅ [์ฝ”๋“œ์ž‡ ๋ถ€์ŠคํŠธ ๋ฐฑ์—”๋“œ ์Šคํ„ฐ๋”” ]

by wonee1 2024. 7. 31.
728x90

 

 

1. express๋ž€?

 

๐Ÿ’ก Express๋Š” Node.js๋กœ ์›น์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ
     ์›น์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค ๋•Œ ํ•„์š”ํ•œ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ ์ œ๊ณต

 

 

Express ๊ตฌ์„ฑ์š”์†Œ

๐Ÿ”น๋ฏธ๋“ค์›จ์–ด

๐Ÿ”น๋ฆฌํ€˜์ŠคํŠธ ๋ฆฌ์Šคํฐ์Šค ๊ฐ์ฒด

๐Ÿ”น๋ผ์šฐํ„ฐ

๐Ÿ”น์—๋Ÿฌ ํ•ธ๋“ค๋Ÿฌ

๐Ÿ”นํŒŒ์ผ

 

 

 


 

 

 

 

2. ๋ฏธ๋“ค์›จ์–ด

 

 

๋ฏธ๋“ค์›จ์–ด๋ž€?

 

 

 

 

๋ฏธ๋“ค์›จ์–ด๋ž€?

๐Ÿ”น๋ฆฌํ€˜์ŠคํŠธ์™€ ๋ฆฌ์Šคํฐ์Šค ์‚ฌ์ด์— ์œ„์น˜ํ•˜์—ฌ ์–ด๋– ํ•œ ๋™์ž‘์„ ํ•˜๋Š” ํ•จ์ˆ˜

๐Ÿ”นExpress๋ฅผ ๋ฏธ๋“ค์›จ์–ด์˜ ์ง‘ํ•ฉ์ด๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค

 

***๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๋ฐ›๊ณ  ๋ฆฌ์Šคํฐ์Šค๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ์›น ๊ธฐ๋ณธ ๋™์ž‘

 

 

ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๋ฐ›์•„์„œ ๋ฆฌ์Šคํฐ์Šค๋ฅผ ๋งŒ๋“ค์–ด ์ „๋‹ฌ

 

 

๋ฏธ๋“ค์›จ์–ด์˜ ๊ตฌ์กฐ

 

function greeting(req,res){
  console.log(req);
   res.json({message:'์•ˆ๋…•, ์ฝ”๋“œ์ž‡ (;'});
}//์ด๋ฆ„์ด ์žˆ๋Š” ํ•จ์ˆ˜๋กœ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค

ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ 2๊ฐœ์ธ ๊ฒฝ์šฐ

๐Ÿ”น๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ฏธ๋“ค์›จ์–ด ๊ตฌ์กฐ

 

function greeting(req,res, next){
  next();
   res.json({message:'์•ˆ๋…•, ์ฝ”๋“œ์ž‡ (;'});
}

ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ 3๊ฐœ์ธ ๊ฒฝ์šฐ

๐Ÿ”น next๋Š” ๋‹ค์Œ ๋ฏธ๋“ค์›จ์–ด ํ•จ์ˆ˜๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค

โž• ์ถ”๊ฐ€์ ์ธ ์—๋Ÿฌ ํ•ธ๋“ค๋ง์„ ์œ„ํ•ด ๋‹ค์Œ ์—๋Ÿฌ ํ•ธ๋“ค๋Ÿฌ๋กœ ์ฒ˜๋ฆฌ๋ฅผ ๋„˜๊ธฐ๋Š” ์—ญํ• ์„ ํ•˜๊ธฐ๋„ ํ•œ๋‹ค

 

 

function greeting(err,req,res, next){

   res.json({message:'์•ˆ๋…•, ์ฝ”๋“œ์ž‡ (;'});
}

ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ 4๊ฐœ์ธ ๊ฒฝ์šฐ

๐Ÿ”นerr๋Š” ์—๋Ÿฌ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์žˆ๋‹ค

๐Ÿ”น ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ์‹คํ–‰์ด ์•ˆ๋œ๋‹ค→ throw๋‚˜ next(err)๋กœ ์‹คํ–‰

 

 

 

 

 

๋ฏธ๋“ค์›จ์–ด์˜ ์‚ฌ์šฉ๋ฒ• 

 

 

๐Ÿ’ก๋ฏธ๋“ค์›จ์–ด์˜ ์‚ฌ์šฉ๋ฒ• (1)

๋‹ค์Œ ๋ฏธ๋“ค์›จ์–ด๊ฐ€ ๋˜๋Š” ๊ธฐ์ค€

→ ์•„๊ทœ๋จผํŠธ๋กœ ๋„˜๊ฒจ์ค€ ์ˆœ์„œ์— ๋”ฐ๋ผ ๋‹ค์Œ ๋ฏธ๋“ค์›จ์–ด๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค

 

app.get('/hello',meeting,waving, greeting);
import express from 'express';

const app = express();

//app.get('/', (req, res) => {
 // res.json({ message: '์•ˆ๋…•, ์ฝ”๋“œ์ž‡ (;' });
//});//์ฝœ๋ฐฑํ•จ์ˆ˜๊ฐ€ ๋ฏธ๋“ค์›จ์–ด ์—ญํ• ์„ ํ•˜๊ณ  ์žˆ๋‹ค (๋ฆฌํ€˜์ŠคํŠธ ํ•ธ๋“ค๋Ÿฌ)

function meeting(req,res,next){
  console.log('์˜ค!');
  next();
}

function waving(req, res, next){
  console.log('(์†์„ ํ”๋“ค๋‹ค.)');
  next();
}

function greeting(req,res,next){
   console.log('์•ˆ๋…•!');
   res.json({message:'์•ˆ๋…•, ์ฝ”๋“œ์ž‡ (;'});
}//์ด๋ฆ„์ด ์žˆ๋Š” ํ•จ์ˆ˜๋กœ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค

app.get('/',greeting);
app.get('/hello',meeting, waving, greeting);

//app.METHOD(path, callback[, callback, ...])

app.listen(3000, () => {
  console.log('Server is listening on port 3000');
});

 

 

๐Ÿ’ก๋ฏธ๋“ค์›จ์–ด์˜ ์‚ฌ์šฉ๋ฒ• (2)

ํŠน์ • ๊ฒฝ๋กœ์— http ๊ด€๊ณ„ ์—†์ด ๊ฐ™์€ ๋™์ž‘์„ ์‹คํ–‰ํ•˜๋„๋กํ•  ๋•Œ all ๋ฉ”์†Œ๋“œ๋ฅผ ํ™œ์šฉํ•œ๋‹ค

import express from 'express';

const app = express();

//app.get('/', (req, res) => {
 // res.json({ message: '์•ˆ๋…•, ์ฝ”๋“œ์ž‡ (;' });
//});//์ฝœ๋ฐฑํ•จ์ˆ˜๊ฐ€ ๋ฏธ๋“ค์›จ์–ด ์—ญํ• ์„ ํ•˜๊ณ  ์žˆ๋‹ค (๋ฆฌํ€˜์ŠคํŠธ ํ•ธ๋“ค๋Ÿฌ)

app.all('/hello',(req,res,next)=>{
  console.log('์•ˆ๋…•,all!');
  next();
})

app.get('/hello',(req,res,next)=>{
  console.log('์•ˆ๋…•,GET!');
  res.json({message:'์•ˆ๋…•, ์ฝ”๋“œ์ž‡ (;'});
});

app.post('/hello',(req,res,next)=>{
  console.log('์•ˆ๋…•,POST!');
  res.json({message:'์•ˆ๋…•, ์ฝ”๋“œ์ž‡ (;'});
});

//app.METHOD(path, callback[, callback, ...])

app.listen(3000, () => {
  console.log('Server is listening on port 3000');
});

 

 

 

 

use ๋ฉ”์†Œ๋“œ

๐Ÿ”น all ๋ฉ”์†Œ๋“œ์™€ ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•œ๋‹ค

๐Ÿ”น ๋ชจ๋“  ๋ฆฌํ€˜์ŠคํŠธ๊ฐ€ ์ง€์ • ๋ผ์šฐํ„ฐ๋ฅผ ๊ฑฐ์ณ๊ฐ€๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค

import express from 'express';

const app = express();

//app.get('/', (req, res) => {
 // res.json({ message: '์•ˆ๋…•, ์ฝ”๋“œ์ž‡ (;' });
//});//์ฝœ๋ฐฑํ•จ์ˆ˜๊ฐ€ ๋ฏธ๋“ค์›จ์–ด ์—ญํ• ์„ ํ•˜๊ณ  ์žˆ๋‹ค (๋ฆฌํ€˜์ŠคํŠธ ํ•ธ๋“ค๋Ÿฌ)

app.use('/hello',(req,res,next)=>{
  console.log('์•ˆ๋…•, use!');
  next();
}) -> hello๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ชจ๋“  ๊ฒฝ๋กœ, ๋ผ์šฐํ„ฐ์— ๋Œ€์‘๋œ๋‹ค 

app.all('/hello/all',(req,res,next)=>{
  console.log('์•ˆ๋…•,all!');
  next();
})

app.get('/hello/all',(req,res,next)=>{
  console.log('์•ˆ๋…•,GET!');
  res.json({message:'์•ˆ๋…•, ์ฝ”๋“œ์ž‡ (;'});
});

app.post('/hello/all',(req,res,next)=>{
  console.log('์•ˆ๋…•,POST!');
  res.json({message:'์•ˆ๋…•, ์ฝ”๋“œ์ž‡ (;'});
});

//app.METHOD(path, callback[, callback, ...])

app.listen(3000, () => {
  console.log('Server is listening on port 3000');
});

 

 

 

 

๋ฏธ๋“ค์›จ์–ด๋กœ req,res ๋‹ค๋ฃจ๊ธฐ

 

๋ฆฌํ€˜์ŠคํŠธ์™€ ๋ฆฌ์Šคํฐ์Šค๋Š” ๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์— ์›ํ•˜๋Š” ๊ฐ’์„ ์ฑ„์šธ ์ˆ˜ ์žˆ๋‹ค

import express from 'express';

const app = express();

function one(req, res, next) {
  console.log(req.query);
  return next();
}

function two(req, res, next) {
  console.log(req.query);
  return next();
}

function three(req, res, next) {
  console.log(req.query);
  return res.json({ message: '์•ˆ๋…•, ์ฝ”๋“œ์ž‡ (;' });
}

app.get('/hello', one, two, three);

function authentication(req, res, next){
  req.user="Codeit";
  next();
}

app.get('/me', authentication,(req,res,next)=>{
  console.log(req.uesr);
  res.json({user: req.user});
});

app.listen(3000, () => {
  console.log('Server is listening on port 3000');
});

 

 

 

์—๋Ÿฌ ์ฒ˜๋ฆฌํ•˜๊ธฐ

 

 

 

๐Ÿ”นExpress๋Š” ๊ธฐ๋ณธ์ ์ธ ์—๋Ÿฌ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ๋‚ด์žฅ๋˜์–ด์žˆ๋‹ค

๐Ÿ”น๊ธฐ๋ณธ์ ์œผ๋กœ html๋กœ ์—๋Ÿฌ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค → json์œผ๋กœ ๋ฐ”๊พธ๋ ค๋ฉด ๋”ฐ๋กœ ์ž‘์„ฑํ•ด์ค˜์•ผํ•œ๋‹ค

 

import express from 'express';

const app = express();

function error(req, res, next) {
  throw new Error('์—๋Ÿฌ ๋ฐœ์ƒ!');
  next(new Error('์—๋Ÿฌ ๋ฐœ์ƒ!'));
  next();
}

function ok(req, res, next) {
  res.json({ message: 'OK!' });
}

app.get('/error', error, ok);
app.use((err, req, res,next)=>{
  console.log(err);
  res.json({message:'์—๋Ÿฌ ํ•ธ๋“ค๋Ÿฌ!'});
});

app.listen(3000, () => {
  console.log('Server is listening on port 3000');
});

 

 

๋‚ด์žฅ ๋ฏธ๋“ค์›จ์–ด

 

Express๋Š” ๋ฏธ๋ฆฌ ํฌํ•จ๋˜์–ด์žˆ๋Š” ๋ฏธ๋“ค์›จ์–ด๊ฐ€ ์žˆ๋‹ค → ๋‚ด์žฅ ๋ฏธ๋“ค์›จ์–ด

๐Ÿ”น๋ชจ๋“  ๊ฒฝ๋กœ์— ๋Œ€ํ•œ ๋ฆฌํ€˜์ŠคํŠธ์™€ ๋ฆฌ์Šคํฐ์Šค์— ๋Œ€ํ•ด ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ !

(๊ฒฝ๋กœ๋ฅผ ์ƒ๋žตํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค)

 

 

express.json()

๐Ÿ”น๋ฆฌํ€˜์ŠคํŠธ ๋ฐ”๋””์— ์žˆ๋Š” json์„ ๊ฐ์ฒด๋กœ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค

๐Ÿ”น์‹คํ–‰๊ฒฐ๊ณผ๋กœ ํ•จ์ˆ˜ ์ž์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋‹ค

๐Ÿ’ก๋ฆฌํ€˜์ŠคํŠธ ๋ฐ”๋””์˜ ๋‚ด์šฉ์„ req ๊ฐ์ฒด์˜ body ์†์„ฑ์„ ํ†ตํ•ด์„œ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค req ๊ฐ์ฒด์˜ body ์†์„ฑ์— ๋ฆฌํ€˜์ŠคํŠธ ๋ฐ”๋””์˜ ๊ฐ’์„ ๊ฐ์ฒด๋กœ ๋‹ด๋Š” ์—ญํ• 

 

import express from 'express';

const app = express();

app.use(express.json());
//app.use((req, res,next)=>{...})
app.post('/products', (req, res) => {
  console.log(req.body);
  res.json({ message: 'Product ์ถ”๊ฐ€ํ•˜๊ธฐ' });
});

app.post('/users', (req, res) => {
  console.log(req.body);
  res.json({ message: 'User ์ถ”๊ฐ€ํ•˜๊ธฐ' });
})

app.listen(3000, () => {
  console.log('Server is listening on port 3000');
});

 

 

 

express.urlencoded()

๐Ÿ”นcontente type์ด application/x-www-form-urlencoded์ธ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค

๐Ÿ”น์ฃผ๋กœ html์˜ ์ž…๋ ฅํผ์„ ํ†ตํ•ด ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค)

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

 

 

 

express.static()

๐Ÿ”น์„œ๋ฒ„์˜ ํŒŒ์ผ์„ ์„œ๋ฒ„ ์™ธ๋ถ€๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค

app.use(express.static('public')); //ํŒŒ์ผ์˜ ๋””๋ ‰ํ† ๋ฆฌ ์œ„์น˜๋ฅผ ๊ด„ํ˜ธ์— ์ ๋Š”๋‹ค 

 

 

 

ex) JSON ํฌ๋ฉง์˜ ๋ฆฌํ€˜์ŠคํŠธ ๋ฐ”๋””๋ฅผ ๋ฐ›์•„์„œ, 201 Created ์ƒํƒœ ์ฝ”๋“œ์™€ ํ•จ๊ป˜ title๊ณผ content์˜ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ํ•˜๋Š” ์ฝ”๋“œ

import express from 'express';

const app = express();

app.use(express.json());

app.post('/posts', (req, res) => {
const { title, content } = req.body;
res.status(201).json({ title, content });
});

app.listen(3000, () => {
console.log('Server is listening on port 3000');
});

 

 

์„œ๋“œํŒŒํ‹ฐ ๋ฏธ๋“ค์›จ์–ด

 

๐Ÿ”นcookie-parser

๋ฆฌํ€˜์ŠคํŠธ๋กœ ์ „๋‹ฌ๋ฐ›์€ ์ฟ ํ‚ค๋ฅผ ์‰ฝ๊ฒŒ ํŒŒ์‹ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋ฏธ๋“ค์›จ์–ด

 

๐Ÿ”นmorgan

์„œ๋ฒ„๋กœ ๋“ค์–ด์˜จ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๋กœ๊ทธ๋กœ ๋‚จ๊ธฐ๋Š” ๋ฏธ๋“ค์›จ์–ด

 

๐Ÿ”นcors

CORS๋Š” Cross-Origin Resource Sharing์˜ ์•ฝ์ž

์›น ์‚ฌ์ดํŠธ๊ฐ€ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์— ์žˆ๋Š” ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ธŒ๋ผ์šฐ์ €์—์„œ HTTP ํ—ค๋”๋ฅผ ํ†ตํ•ด ์ œ์–ดํ•˜๋Š” ๊ฒƒ

 

๐Ÿ”นmulter

Content-Type์ด multipart/form-data์ธ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๊ฐ„ํŽธํ•˜๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ๋ฏธ๋“ค์›จ์–ด

์—ฌ๊ธฐ์„œ multipart/form-data๋Š” ์ž…๋ ฅ ํผ์„ ์ž‘์„ฑํ•˜๊ณ  ์ „์†กํ•  ๋•Œ, ๋‹ค์–‘ํ•œ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†ก ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ํƒ€์ž…

multipart/form-data ํƒ€์ž…์œผ๋กœ ์ „๋‹ฌ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฆฌํ€˜์ŠคํŠธ ๊ฐ์ฒด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋กํ•œ๋‹ค

 

 


 

3. ๋ผ์šฐํ„ฐ

 

๋ผ์šฐํŠธ ์ค‘๋ณต ์ œ๊ฑฐํ•˜๊ธฐ

 

๊ฐ ๊ฒฝ๋กœ๋งˆ๋‹ค ๋ผ์šฐํ„ฐ๊ฐ€ ์ƒ๊ฒจ๋‚˜๋ฉด ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์ง„๋‹ค

→ ๋”ฐ๋ผ์„œ ์ค‘๋ณต๋œ ๊ฒฝ๋กœ์˜ ๋ผ์šฐํ„ฐ๋ฅผ ์ œ๊ฑฐํ•ด์ค€๋‹ค

app.route('/products')
  .get((req, res)=>{
    res.json({message:'Product ๋ชฉ๋ก ๋ณด๊ธฐ'});
  })
  .post((req, res) => {
    res.json({ message: 'Product ์ถ”๊ฐ€ํ•˜๊ธฐ' });
  })

๐Ÿ”น app.route๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ค‘๋ณต๋œ ๊ฒฝ๋กœ์˜ ๋ผ์šฐํ„ฐ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค

 

 

 

 

๋ผ์šฐํ„ฐ ์ƒ์„ฑ

 

const productRouter =express.Router();//๋ผ์šฐํ„ฐ ์ƒ์„ฑ 

productRouter.route('/products')
  .get((req, res) => {
    res.json({ message: 'Product ๋ชฉ๋ก ๋ณด๊ธฐ' });
  })
  .post((req, res) => {
    res.json({ message: 'Product ์ถ”๊ฐ€ํ•˜๊ธฐ' });
  });

productRouter.route('/products/:id')
  .patch((req, res) => {
    res.json({ message: 'Product ์ˆ˜์ •ํ•˜๊ธฐ' });
  })
  .delete((req, res) => {
    res.json({ message: 'Product ์‚ญ์ œํ•˜๊ธฐ' });
  });

 

 

๋ผ์šฐํ„ฐ ๋ ˆ๋ฒจ ๋ฏธ๋“ค์›จ์–ด

 

 

ํŠน์ • ๋ผ์šฐํ„ฐ ๊ทธ๋ฃน์ธ ๋ผ์šฐํ„ฐ์—๋งŒ ์ ์šฉ๋˜๋Š” ๊ฒƒ์„ ๋ผ์šฐํ„ฐ ๋ ˆ๋ฒจ ๋ฏธ๋“ค์›จ์–ด๋ผ๊ณ  ํ•œ๋‹ค

 

import express from 'express';

const app = express();

const productRouter = express.Router();

productRouter.unsubscribe((req,res,next)=>{
  console.log('Product Router์—์„œ ํ•ญ์ƒ ์‹คํ–‰!');
  next();
})

productRouter.route('/')
  .get((req, res) => {
    res.json({ message: 'Product ๋ชฉ๋ก ๋ณด๊ธฐ' });
  })
  .post((req, res) => {
    res.json({ message: 'Product ์ถ”๊ฐ€ํ•˜๊ธฐ' });
  });

productRouter.route('/:id')
  .patch((req, res) => {
    res.json({ message: 'Product ์ˆ˜์ •ํ•˜๊ธฐ' });
  })
  .delete((req, res) => {
    res.json({ message: 'Product ์‚ญ์ œํ•˜๊ธฐ' });
  });

const userRouter =express.Router();

userRouter.get('/',(req,res,next)=>{
  res.json({message: 'User ๋ชฉ๋ก ๋ณด๊ธฐ'});
});

app.use('/products', productRouter);
app.use('/users',userRouter)

app.listen(3000, () => {
  console.log('Server is listening on port 3000');
});

 

 

Express ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ์™€ ๋ชจ๋“ˆํ™”

router์™€ ๋ฏธ๋“ค์›จ์–ด๋ฅผ ๊ฐ๊ฐ ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌํ•œ๋‹ค

 

 

728x90