Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- html
- Linux
- SOLID
- python
- DM
- Express
- ts
- Three
- ML
- PyTorch
- js
- CV
- UI
- Git
- frontend
- review
- postgresql
- figma
- GAN
- mongo
- PRISMA
- CSS
- vscode
- react
- DB
- sqlite
- C++
- nodejs
- API
- ps
Archives
- Today
- Total
아카이브
[Node][Express] route & Router 메소드 본문
route( )
미들웨어의 기능을 추가하다보면 이렇게 중복되는 경로들이 많아지는 경우가 있습니다.
아래 코드의 경우 /products의 경로가 중복해서 나타나는 것을 볼 수 있습니다.
import express from 'express'
const app = express()
app.get('/products', (req, res) => {
res.json({ message: 'get Product list' })
})
app.post('/products', (req, res) => {
res.json({ message: 'add Product' })
})
app.patch('/products/:id', (req, res) => {
res.json({ message: 'modify Product' })
})
app.delete('/products/:id', (req, res) => {
res.json({ message: 'delete Product' })
})
app.listen(3000, () => {
console.log('Server is listening on port 3000')
})
express의 route( ) 메소드를 사용하면 자주 사용되는 경로를 묶어서 간단하게 작성할 수 있습니다.
import express from 'express'
const app = express()
app.route('/products')
.get((req, res) => {
res.json({ message: 'get Product list' })
})
.post((req, res) => {
res.json({ message: 'add Product' })
})
app.route('/products/:id')
.patch('/products/:id', (req, res) => {
res.json({ message: 'modify Product' })
})
.delete('/products/:id', (req, res) => {
res.json({ message: 'delete Product' })
})
app.listen(3000, () => {
console.log('Server is listening on port 3000')
})
Router( )
route를 이용해서 중복되는 경로의 기입을 줄일 수 있지만, 경로 자체가 여러가지라면 route의 개수 또한 많아지게 됩니다.
이 때 express의 Router() 메소드를 사용하면 비슷한 기능을 하는 route()들을 하나의 Router로 묶어 app과 연결시킬 수 있습니다.
import express from 'express'
const app = express()
const sampleRouter = express.Router()
sampleRouter.route('/') // app 대신 sampleRouter에 route를 사용합니다.
.get((req, res) => {
res.json({ message: 'get Product list' })
})
.post((req, res) => {
res.json({ message: 'add Product' })
})
sampleRouter.route('/:id') // app 대신 sampleRouter에 route를 사용합니다.
.patch('/products/:id', (req, res) => {
res.json({ message: 'modify Product' })
})
.delete('/products/:id', (req, res) => {
res.json({ message: 'delete Product' })
})
app.use('/products', sampleRouter) // sampleRouter를 미들웨어로 사용합니다.
app.listen(3000, () => {
console.log('Server is listening on port 3000')
})
또한 미들웨어는 Router 수준에서도 정의할 수 있습니다.
sampleRouter.use((req, res, next) => {
console.log('this is always exectued in the sampleRouter')
next()
})
이렇게 생성하는 Router들은 다른 파일에서 작성할 수도 있기 때문에 미들웨어를 모듈화 하는데 사용될 수 있습니다.
728x90
'Backend > Node.js' 카테고리의 다른 글
[Node][Express] Middleware | 03. multer (0) | 2024.08.20 |
---|---|
[Node][Express] Middleware | 02. morgan (0) | 2024.08.20 |
[Node][Express] Middleware | 01. cookie-parser (0) | 2024.08.19 |
[Node][Express] 내장 미들웨어 json() / urlencoded() / static() (0) | 2024.08.18 |
[Node][Express] all & use 메소드 (0) | 2024.08.16 |
Comments