Cursos / Informática para Internet / Desenvolvimento Backend / Aula
Nesta aula, você verá como controlar rotas, como validar dados e também conhecere o conceito de middlewares do Express.
O Express fornece um facilitador para organizar as rotas em diferentes arquivos, deixando o código mais organizado. Para usar esse conceito, crie um arquivo novo chamado usuarios.rota.js
na pasta /rotas
do seu projeto com o seguinte conteúdo:
const express = require('express')
const router = express.Router()
const { v4: uuidv4 } = require('uuid')
const usuarios = {}
router.get('/:id', (req, res) => {
res.json({usuarios: usuarios[req.params.id]})
})
router.put('/', (req, res) => {
const id = req.query.id
if (id && usuarios[id]){
const usuario = req.body
usuario.id = id
usuarios[id] = usuario
res.json({msg: "Usuário atualizado com sucesso!"})
}else{
res.status(400).json({msg: "Usuário não encontrado!"})
}
})
router.delete('/', (req, res) => {
const id = req.query.id
if (id && usuarios[id]){
delete usuarios[id]
res.json({msg: "Usuário deletado com sucesso!"})
}else{
res.status(400).json({msg: "Usuário não encontrado!"})
}
})
router.post('/', (req, res) => {
const usuario = req.body
const idUsuario = uuidv4()
usuario.id = idUsuario
usuarios[idUsuario] = usuario
res.json({msg: "Usuário adicionado com sucesso!"})
})
router.get('/', (req, res) => {
res.json({usuarios: Object.values(usuarios)})
})
module.exports = router
Perceba que em vez de criar as rotas diretamente na instância da aplicação (app
), estamos criando no express.Router()
. Com isso, é possível dividir e organizar melhor o código.
Uma vez criado o arquivo de rotas, altere o arquivo principal da aplicação (index.js) para incluir o arquivo de rotas e indicar o path base.
const express = require('express')
const rotaUsuario = require('./rotas/usuario.rota')
const app = express()
app.use(express.json())
app.use('/usuarios', rotaUsuario)
app.get('/', (req, res) => {
res.json({msg: "Hello from Express!"})
})
app.listen(8080, () => {
console.log('Servidor pronto na porta 8080')
})
Seguindo no nosso exemplo, vamos criar a API de um blog. Para isso, vamos agora criar as operações relativas às postagens do blog replicando a solução dadas as rotas do /usuarios
.
Crie então o arquivo post.rota.js
na pasta /rotas
com o seguinte conteúdo:
const express = require('express')
const router = express.Router()
const { v4: uuidv4 } = require('uuid')
const posts = {}
router.get('/:id', (req, res) => {
res.json({posts: posts[req.params.id]})
})
router.put('/', (req, res) => {
const id = req.query.id
if (id && posts[id]){
const post = req.body
post.id = id
posts[id] = post
res.json({msg: "Post atualizado com sucesso!"})
}else{
res.status(400).json({msg: "Post não encontrado!"})
}
})
router.delete('/', (req, res) => {
const id = req.query.id
if (id && posts[id]){
delete posts[id]
res.json({msg: "Post deletado com sucesso!"})
}else{
res.status(400).json({msg: "Post não encontrado!"})
}
})
router.post('/', (req, res) => {
const post = req.body
const idPost = uuidv4()
post.id = idPost
posts[idPost] = post
res.json({msg: "Post adicionado com sucesso!"})
})
router.get('/', (req, res) => {
res.json({posts: Object.values(posts)})
})
module.exports = router
Altere agora o arquivo principal (index.js) para incluir a nova rota:
const express = require('express')
const rotaUsuario = require('./rotas/usuario.rota')
const rotaPost = require('./rotas/posts.rota')
const app = express()
app.use(express.json())
app.use('/usuarios', rotaUsuario)
app.use('/posts', rotaPost)
app.get('/', (req, res) => {
res.json({msg: "Hello from Express!"})
})
app.listen(8080, () => {
console.log('Servidor pronto na porta 8080')
})
Para a explicação detalhada, não deixe de assistir a videoaula.
Versão 5.3 - Todos os Direitos reservados