Arquitetura e
Desenvolvimento de
uma Api em NodeJs
14ª NodeJS BH Meetup – Rethink
API: o melhor caso de uso para NodeJS
• O desejo é alto grau de concorrência
• Menor tempo impactado por Entrada/Saída
• Menos gasto de memória por request, mais
concorrência
• Servidor Web sempre deseja alto grau de paralelismo
Express: a referência em soluções de API
• Framework Server Web mais conhecido em NodeJS
• Resolve de maneira simples as duas principais
necessidades de um servidor de aplicações web:
• Simples configurar como devolver HTML/CSS/assets
• Simples arquitetar como devolver JSON e backend
Partindo do zero
• Da linha de comando, se você começar com...
$ npm install -g express-generator
$ express --view=html
Partindo do zero
... você sai com:
O coração de uma API em Express
Este é o arquivo
app.js inicial
A cascata de rotas Express
• São sempre uma sequência de regras de rota, que
podem interromper a execução ou delegar para a
próxima
• Este é o conceito de middlewares: você invoca
pequenas regras lógicas no meio do caminho
Rotas em um Roteador
Este é um
exemplo de Rota
Rota completa
Esta é uma Rota com
todos os métodos
HTTP possíveis
Explorando algumas bibliotecas consagradas
• Swagger
• Passport
• Joi
• Helmet
• Knex
•Body-parser
•Winston
•JWT
•Bluebird
•Dot-env
Dot-env
• Permite definir um
arquivo .env com os
valores locais para as
variáveis de ambiente
Middlewares “plug and play”
• Vários middlewares são praticamente “features” que
geralmente se espera do Express
• Eles podem ser facilmente adicionados ao App.js e
disponibilizados para todas as rotas
Middlewares “plug and play”
Winston
• Logger usual
• Permite registrar em
vários locais ao mesmo
tempo com um só log
Passport
• Permite adicionar redes
sociais como logins
• Várias “estratégias”
(redes e protocolos) de
autenticação disponíveis
JWT
• Padrão de autenticação
via Header Token
• Pode se integrar
facilmente aos
middlewares
Bluebird
• Antigo padronizador de
Promises em Node
• Ainda útil para lidar
com conversão de
callbacks para Promises
Knex
• Query Builder
• Facilita a padronização
de buscas em bancos de
dados
• Acopla facilmente para
um ORM (BookshelfJS)
Joi
• Validação para input
em API
• Facilita a aplicação de
regras de negócio já na
chamada
Swagger
• Padrão de
documentação de API
• Com middlewares,
pode criar uma página
HTML interativa com
toda a documentação
Bônus: Testes unitários
• App com rotas
separadas permitem
testes unitários
facilmente
• Mocha & Supertest
Obrigado!
14ª NodeJS BH Meetup – Rethink
https://github.com/fmalk/meetup-node-api
Fernando Piancastelli – fernando@rethink.dev

Arquitetura API em NodeJS

  • 1.
    Arquitetura e Desenvolvimento de umaApi em NodeJs 14ª NodeJS BH Meetup – Rethink
  • 2.
    API: o melhorcaso de uso para NodeJS • O desejo é alto grau de concorrência • Menor tempo impactado por Entrada/Saída • Menos gasto de memória por request, mais concorrência • Servidor Web sempre deseja alto grau de paralelismo
  • 3.
    Express: a referênciaem soluções de API • Framework Server Web mais conhecido em NodeJS • Resolve de maneira simples as duas principais necessidades de um servidor de aplicações web: • Simples configurar como devolver HTML/CSS/assets • Simples arquitetar como devolver JSON e backend
  • 4.
    Partindo do zero •Da linha de comando, se você começar com... $ npm install -g express-generator $ express --view=html
  • 5.
    Partindo do zero ...você sai com:
  • 6.
    O coração deuma API em Express Este é o arquivo app.js inicial
  • 7.
    A cascata derotas Express • São sempre uma sequência de regras de rota, que podem interromper a execução ou delegar para a próxima • Este é o conceito de middlewares: você invoca pequenas regras lógicas no meio do caminho
  • 8.
    Rotas em umRoteador Este é um exemplo de Rota
  • 9.
    Rota completa Esta éuma Rota com todos os métodos HTTP possíveis
  • 10.
    Explorando algumas bibliotecasconsagradas • Swagger • Passport • Joi • Helmet • Knex •Body-parser •Winston •JWT •Bluebird •Dot-env
  • 11.
    Dot-env • Permite definirum arquivo .env com os valores locais para as variáveis de ambiente
  • 12.
    Middlewares “plug andplay” • Vários middlewares são praticamente “features” que geralmente se espera do Express • Eles podem ser facilmente adicionados ao App.js e disponibilizados para todas as rotas
  • 13.
  • 14.
    Winston • Logger usual •Permite registrar em vários locais ao mesmo tempo com um só log
  • 15.
    Passport • Permite adicionarredes sociais como logins • Várias “estratégias” (redes e protocolos) de autenticação disponíveis
  • 16.
    JWT • Padrão deautenticação via Header Token • Pode se integrar facilmente aos middlewares
  • 17.
    Bluebird • Antigo padronizadorde Promises em Node • Ainda útil para lidar com conversão de callbacks para Promises
  • 18.
    Knex • Query Builder •Facilita a padronização de buscas em bancos de dados • Acopla facilmente para um ORM (BookshelfJS)
  • 19.
    Joi • Validação parainput em API • Facilita a aplicação de regras de negócio já na chamada
  • 20.
    Swagger • Padrão de documentaçãode API • Com middlewares, pode criar uma página HTML interativa com toda a documentação
  • 21.
    Bônus: Testes unitários •App com rotas separadas permitem testes unitários facilmente • Mocha & Supertest
  • 22.
    Obrigado! 14ª NodeJS BHMeetup – Rethink https://github.com/fmalk/meetup-node-api Fernando Piancastelli – fernando@rethink.dev