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

Criando API's de verdade com HapiJS

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →

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

Transcript

44 slides
  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!

More Decks by Matheus Fidelis

Other Decks in Programming