Routing
Creating a router
To create an express router, we import the Router function from express.
js
import { Router } from 'express'
const router = Router()Adding endpoints
We can add endpoints to router just like we do to app, by using the .get(), .post(), .put() and .delete() methods.
js
router.get('/:userId', async (req, res) => {
const { userId } = req.params
const user = await User.findById(userId)
res.json(user)
})Attaching the router
We attach our router to app using app.use().
js
app.use('/users', userRouter)Notice that the /users prefix is added to all routes in the userRouter, resulting in /users/:userId and so on.
Multiple routers
We usually use routers to split our API routes into separate files, making the project easier to maintain.
js
import { Router } from 'express'
import User from '../models/User.js'
const router = Router()
router.get('/', async (req, res) => {
const { limit } = req.query
const users = await User.findAll(limit)
res.json(users)
})
router.get('/:userId', async (req, res) => {
const { userId } = req.params
const user = await User.findById(userId)
res.json(user)
})
router.post('/', async (req, res) => {
const { username, verified } = req.body
const user = await User.create(username, verified)
res.json(user)
})
export default routerjs
import { Router } from 'express'
import Bleet from '../models/Bleet.js'
const router = Router()
router.get('/', async (req, res) => {
const bleets = await Bleet.findAll()
res.json(bleets)
})
router.get('/:bleetId', async (req, res) => {
const { bleetId } = req.params
const bleet = await Bleet.findById(bleetId)
res.json(bleet)
})
router.post('/', async (req, res) => {
const { content, userId } = req.body
const bleet = await Bleet.create(content, userId)
res.json(bleet)
})
export default routerjs
import express from 'express'
import userRouter from '../routers/users.js'
import bleetRouter from '../routers/bleets.js'
const app = express()
app.use(express.json())
app.use('/users', userRouter)
app.use('/bleets', bleetRouter)
export default app
Corndel