Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Criando API's de verdade com HapiJS

Criando API's de verdade com HapiJS

TAlk ministrada no NodeSchool sobre a arquitetura de API's REST com NodeJS mostrando os pontos fracos e fortes do HapiJS comparado a outros frameworks de mercado.

Matheus Fidelis

December 22, 2017
Tweet

More Decks by Matheus Fidelis

Other Decks in Programming

Transcript

  1. “Any application that can be written in Javascript, will eventually

    be written in Javascript” Jeff Atwood - co-fundador da StackOverflow 3
  2. • Criado por Eran Hammer • Sr. Architect of Mobile

    Platform • Responsável pela arquitetura das maiores aplicações Mobile no Walmart • OAuth e OAuth2 4
  3. • Express não foi suficiente para o Walmart • Falhou

    em grandes equipes e grandes projetos. • Queria uma solução corporativa. 5
  4. • Criado para grandes equipes • Sistemas complexos • Ideal

    para alta disponibilidade • Segurança • Proteção de Memória • Proteção do Event Loop • Gerenciamento de Timeouts • Validações Integradas • Tratamento de Requests abortados, lifecycle, limites de clientes e etc 7
  5. 15 NA VIDA REAL... ▫ Hapi ▫ Express ▫ Body-parser

    ▫ Cookie-parser ▫ Consign ▫ Muster ▫ … middlewares
  6. 16

  7. 17 NA VIDA REAL... ▫ Express é uma abstração do

    HTTP Kernel do Node. ▫ Express te provê ROTAS. Apenas. ▫ Hapi faz vários tratamentos, debug, fallbacks ▫ Proteção do Lifecycle do request ▫ Proteção da memória ▫ Todo o acompanhamento e parsing do HTTP
  8. 18 NO GERAL... ▫ Para aplicações grandes ▫ Apps com

    muitos devs ▫ Apps com muitas validações e segurança ▫ Coisas Simples ▫ Interfaces REST ▫ POC’s e Services ▫ Cloud Functions
  9. ▫ Isso sobre m#rd@ ▫ Exceptions Logging ▫ Legal pra

    registrar Dumps ▫ Logs limpos para rastreio 21 https://github.com/hapijs/poop
  10. 26 https://github.com/hapijs/boom ▫ 4xx ▫ Boom.badRequest() - 400 ▫ Boom.unauthorized()

    - 401 ▫ Boom.forbidden() - 403 ▫ Boom.notFound - 404 ▫ 5xx ▫ Boom.notFound() - 500 ▫ Boom.notImplemented - 501 ▫ Boom.serverUnavailable() - 503
  11. ▫ Console web para debug ▫ Vários servidores Hapi ▫

    Logs dos Requests ▫ Logs limpos para rastreio 27 https://github.com/hapijs/tv
  12. 28

  13. ▫ Gerenciador de Templates ▫ EJS ▫ Jade ▫ Mustache

    ▫ Nunjucks 29 https://github.com/hapijs/vision VISION
  14. 34 Authentication ▫ HTTP Basic authentication ▫ https://github.com/hapijs/hapi-auth-basic ▫ Bearer

    token based authentication ▫ https://github.com/johnbrett/hapi-auth-bearer- token ▫ Firebase ▫ https://github.com/dsdenes/hapi-auth-firebase
  15. 35 Messaging ▫ Hapi-rabbit - RabbitMQ ▫ https://github.com/aduis/hapi-rabbit ▫ Hapi-plugin-websocket

    ▫ https://github.com/rse/hapi-plugin-websocket ▫ Susie ▫ https://github.com/mtharrison/susie
  16. 40 Boreal Server https://github.com/msfidelis/boreal https://hub.docker.com/r/msfidelis/boreal ▫ “RESTfica” qualquer banco MySQL

    ▫ MySQL, MariaDB, Aurora Servers ▫ Caching, Query Builder com HTTP methods, Process Management. ▫ Deploy do banco de dados como um Microservice ▫ Feito para rodar com Docker!