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

Routingse 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);