Roteamento Básico
Já definimos uma rota básica para a homepage. O Express permite definirmos rotas diretamente no objeto app
. Podemos gerenciar muiltiplas ações HTTP como GET
, POST
, PUT/PATCH
e DELETE
.
Essa é a maneira mais fácial de definir rotas, mas conforme a aplicação vai crescendo, precisaremos organizar melhor essas rotas. Vamos imaginar uma aplicação com uma seção de admin e outra de frontend, cada uma com suas várias rotas. O Express vai ajudar, a gente, a organizar isso.
Nessas próximas rotas, não vamos retornar views como resposta, apenas mensagens. Isso vai tornar as coisa mais simples e ajudar a focar apenas nas rotas.
express.Router()
O express.Router() age como uma mini aplicação. Podemos chamar uma instância dele (como fazemos com o Express) e então definir as rotas nele. Vamos ver um exemplo para entender exatamente o que isso significa.
Então, vamos adicionar esse código ao server.js
logo depois do app.get()
. Isso vai:
- chamar uma instância do router;
- criar rotas para ele;
- e então adicionar essas rotas a aplicação principal.
// 1. chamar uma instância do router
var adminRouter = express.Router()
// 2. criar rotas para ele
// página principal (http://localhost:8000/admin)
adminRouter.get('/', (req, res) => {
res.send('Eu sou o dashboard!')
})
// página de usuários (http://localhost:8000/admin/users)
adminRouter.get('/users', (req, res) => {
res.send('Aqui listamos todos os usuários!')
})
// página de posts (http://localhost:8000/admin/posts)
adminRouter.get('/posts', (req, res) => {
res.send('Aqui veremos todos os posts!')
})
// 3. adicionar essas rotas a aplicação principal
app.use('/admin', adminRouter)
Nós chamamos uma instância do express.Router()
e atribuimos a uma variável adminRouter
, aplicamos algumas rotas nele e informamos nossa app para usa-las.
Agora podemos acessar o painel administrativo em http://localhost:8000/admin e as sub-páginas em http://localhost:8000/admin/users e http://localhost:8000/admin/posts.
Perceba como podemos configurar um prefixo para as rotas definidas. Se alterarmos a última linha para app.use('/app', adminRouter)
, então as rotas que passam a valer serão http://localhost:8000/app/ e http://localhost:8000/app/users.
Isso é bastante poderoso, porque podemos criar multiplos express.Router()
e aplica-los a nossa aplicação. Podento ter rotas básicas, rotas autenticadas e até rotas para API.
Usando o Roteamento, podemos tornar nossa aplicação mais flexível e modular que nunca, criando multiplas instâncias de roteamento e aplicando elas conforme o necessário. Agora, vamos dar uma olhada em como vamos usar um middleware para manipular as requisições.