Criando APIs com Node e Express. #1
Node.js
é um ambiente de execução Javascript server-side, já o Express
é um framework para aplicações web do Node.js
Criando um servidor express
//server.js
//importando o express
const express = require('express')
//criando nova instância do express
cons app = express()
//port que sera usada no servidor
const port = 3000
app.get('/', (req, res)=>{
res.send("Hello world")
})
Basic Routing
Routing
se refere à como uma aplicação responde à uma requisição do client, com uma URI
ou verbo HTTP
//estrutura básica da route
app.METHOD(PATH,HANDLER)
app
é a instância express
METHOD
são os verbos HTTP, sendo eles get
, post
, put
, post
etc…
PATH
é o caminho para o endpoint do servidor, aceita regex e parâmetros, por exemplo: '/users/:userID/book/:bookID
HANDLER
é a funçao callback, podendo ser esta com ou sem middleware, veja o exemplo:
(req, res) => {
res.send('sou a função callback)
}
(req, res, next) => {
console.log('a resposta sera dada...')
next()
}(req, res) => {
res.send("... agora!')
}
Objeto de resposta (res)
Tem o objetivo de mandar uma mensagem ao client e terminar o request/response cycle, algum método do objeto response precisa ser chamado para terminar o ciclo. Alguns exemplos de métodos:
res.download()
Solicita que seja efetuado o download de um arquivo.
res.end()
Termina o processo de resposta.
res.send()
Envia uma resposta de vários tipos
etc…
app.route
Cria uma chain de routes, exemplo
app.route('/book)
.get((req,res)=>{
res.send('get a book')})
.post((req,res)=>{
res.send('add a book')})
.put((req,res)=>{
res.send('update a book')})
usando o express.Router()
Agrupa manipuladores de rotas (as vezes é necessário acessa-las utilizando um prefixo), podem conter middlewares também.
//surf.js
var express = require('express')
var router = express.Router()
//middleware especifico para esse router
router.use(timeLog = (req, res, next) =>{
console.log('time: ', Date.now())
next()
})
router.get('/about', (req, res)=>{
res.send('about surf')
})
//exportando o módulo
module.exports = router;
Em seguida, carregue o módulo roteador no aplicativo:
var surf = require('./surf');
...
app.use('/surf', surf);