SlideShare una empresa de Scribd logo
1 de 11
HttpMonkey
    Github.com/rogerleite/http_monkey



•   Motivação
•   Funcionalidades
•   Middlewares
•   Run Forrest, run!




Em 30 minutos!
Motivação
• Por que mais um http client?

•   Interface fluente
•   Aderente ao HTTP 1.1
•   Ser fácil de usar e adaptável
•   Rack middlewares
•   Sempre magro (anoréxico)
Funcionalidades
Suporte ao essencial
Minímo de dependências possível
Essencial:
     • Methods, Headers and Response Codes
     • SSL, Proxy, Timeout, Authentication … etc.
     • Respeitar HTTP 1.1 (tirando o cache)
Opcional:
    • Implementar em projetos separados
    • O cache é um ótimo exemplo de middleware
Funcionalidades
                             Custom Clients
                                N Adapters
          Callbacks por code, array e range




            Middlewares a lá Rack Builder




                   Exemplo simples de get
Funcionalidades
                     Interface fluente
            Representação do Request
                        Mais Internals




            Configuração por Request
       A mesma interface do configure
Funcionalidades
Response roots!




Com helpers supimpas!
Middlewares
Por que middlewares?
Anatomia de um middleware


                                          Geralmente recebe:
                                              options via hash
                            Block pra injetar comportamento
                                  Mega simples around filter
Middlewares
Middlewares disponíveis no HttpMonkey
Middlewares
Middlewares
Futuro
Fazer algo como “http_monkey-browsah”
    • Cache conforme “Caching in HTTP” do RFC 2616-sec13
    • Cookies conforme “State Management Mechanism” do RFC 2109
Explorar Middlewares existentes
    • Rack::CommonLogger, Rack::Etag
    • Rack-contrib tem middlewares interessantes como
      Rack::Profiler, Rack::CommonCookies
    • Rack::Parser – decode/parse data into param hash
Chamadas Assíncronas e Paralelas
Obrigado!
 Github.com/rogerleite/http_monkey




Calma que tem código pra rodar :D

Más contenido relacionado

La actualidad más candente

Yaf - Um framework que roda sob uma extensão
Yaf - Um framework que roda sob uma extensãoYaf - Um framework que roda sob uma extensão
Yaf - Um framework que roda sob uma extensãoThiago Paes
 
Application Servers e Ruby
Application Servers e RubyApplication Servers e Ruby
Application Servers e RubyRafael Soares
 
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHPLabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHPCarlos Santos
 
Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)Daniel Lopes
 
Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7Claudio Miranda
 

La actualidad más candente (7)

Yaf - Um framework que roda sob uma extensão
Yaf - Um framework que roda sob uma extensãoYaf - Um framework que roda sob uma extensão
Yaf - Um framework que roda sob uma extensão
 
Performance em Java
Performance em JavaPerformance em Java
Performance em Java
 
Application Servers e Ruby
Application Servers e RubyApplication Servers e Ruby
Application Servers e Ruby
 
PHP
PHPPHP
PHP
 
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHPLabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
 
Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)
 
Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7
 

Destacado

Pirámides de Egipto
Pirámides de EgiptoPirámides de Egipto
Pirámides de Egiptoweb2012
 
Sin título 1 mi primer trabajo
Sin título 1 mi primer trabajoSin título 1 mi primer trabajo
Sin título 1 mi primer trabajoepantusin
 
Alex balasch cuento de navidad
Alex balasch cuento de navidadAlex balasch cuento de navidad
Alex balasch cuento de navidadagrevol
 
Epigenetics: psiconeuroendocrinology and lamarckian-like evolution
Epigenetics: psiconeuroendocrinology and lamarckian-like evolutionEpigenetics: psiconeuroendocrinology and lamarckian-like evolution
Epigenetics: psiconeuroendocrinology and lamarckian-like evolutionHaskell Lambda
 
agribusiness nov2012 rabo_lochemhandout_updated
agribusiness nov2012 rabo_lochemhandout_updatedagribusiness nov2012 rabo_lochemhandout_updated
agribusiness nov2012 rabo_lochemhandout_updatedRaboGN
 

Destacado (7)

Pirámides de Egipto
Pirámides de EgiptoPirámides de Egipto
Pirámides de Egipto
 
Cooking (1)
Cooking (1)Cooking (1)
Cooking (1)
 
Sin título 1 mi primer trabajo
Sin título 1 mi primer trabajoSin título 1 mi primer trabajo
Sin título 1 mi primer trabajo
 
Alex balasch cuento de navidad
Alex balasch cuento de navidadAlex balasch cuento de navidad
Alex balasch cuento de navidad
 
Epigenetics: psiconeuroendocrinology and lamarckian-like evolution
Epigenetics: psiconeuroendocrinology and lamarckian-like evolutionEpigenetics: psiconeuroendocrinology and lamarckian-like evolution
Epigenetics: psiconeuroendocrinology and lamarckian-like evolution
 
Presentación1
Presentación1Presentación1
Presentación1
 
agribusiness nov2012 rabo_lochemhandout_updated
agribusiness nov2012 rabo_lochemhandout_updatedagribusiness nov2012 rabo_lochemhandout_updated
agribusiness nov2012 rabo_lochemhandout_updated
 

Similar a HTTPMonkey - Cliente HTTP leve e flexível com middlewares

Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
Assespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkAssespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkMayara Fernandes
 
Desenvolvemos para web?
Desenvolvemos para web?Desenvolvemos para web?
Desenvolvemos para web?Luis Vendrame
 
HTTP, Requisição e Resposta
HTTP, Requisição e RespostaHTTP, Requisição e Resposta
HTTP, Requisição e RespostaThiago Rondon
 
Ebook Apache Server: Guia Introdutório
Ebook Apache Server: Guia IntrodutórioEbook Apache Server: Guia Introdutório
Ebook Apache Server: Guia IntrodutórioFernando Palma
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaAlexandre Tarifa
 
Sistemas Distribuídos baseados na Web
Sistemas Distribuídos baseados na WebSistemas Distribuídos baseados na Web
Sistemas Distribuídos baseados na WebRafael Chagas
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terEmerson Macedo
 
Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Emerson Macedo
 
Projeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordProjeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordtchandy
 
Curso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – FrameworksCurso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – FrameworksJonata Weber
 
Integrações e o ecossistema Java - Fabric8 ao Resgate!
Integrações e o ecossistema Java - Fabric8 ao Resgate!Integrações e o ecossistema Java - Fabric8 ao Resgate!
Integrações e o ecossistema Java - Fabric8 ao Resgate!Leandro Gomes
 
Robot Framework no DevTests #34
Robot Framework no DevTests #34Robot Framework no DevTests #34
Robot Framework no DevTests #34Mayara Fernandes
 
Code Igniter & Zend Framework Uma UniãO De Sucesso
Code Igniter & Zend Framework   Uma UniãO De SucessoCode Igniter & Zend Framework   Uma UniãO De Sucesso
Code Igniter & Zend Framework Uma UniãO De SucessoJose Wilker
 
Datacenter na nuvem
Datacenter na nuvemDatacenter na nuvem
Datacenter na nuvemIgnacio Nin
 
Secomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - IntroduçãoSecomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - IntroduçãoEmerson Macedo
 

Similar a HTTPMonkey - Cliente HTTP leve e flexível com middlewares (20)

Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
Assespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkAssespro pr-workshop-robot framework
Assespro pr-workshop-robot framework
 
Desenvolvemos para web?
Desenvolvemos para web?Desenvolvemos para web?
Desenvolvemos para web?
 
HTTP, Requisição e Resposta
HTTP, Requisição e RespostaHTTP, Requisição e Resposta
HTTP, Requisição e Resposta
 
Ebook Apache Server: Guia Introdutório
Ebook Apache Server: Guia IntrodutórioEbook Apache Server: Guia Introdutório
Ebook Apache Server: Guia Introdutório
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
 
Sistemas Distribuídos baseados na Web
Sistemas Distribuídos baseados na WebSistemas Distribuídos baseados na Web
Sistemas Distribuídos baseados na Web
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
 
Tutorial JSF 2.0 (2012)
Tutorial JSF 2.0 (2012)Tutorial JSF 2.0 (2012)
Tutorial JSF 2.0 (2012)
 
Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011
 
Projeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordProjeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecord
 
Cakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudouCakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudou
 
Ferramentas open-source
Ferramentas open-sourceFerramentas open-source
Ferramentas open-source
 
Curso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – FrameworksCurso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – Frameworks
 
Web tools pt-br
Web tools pt-brWeb tools pt-br
Web tools pt-br
 
Integrações e o ecossistema Java - Fabric8 ao Resgate!
Integrações e o ecossistema Java - Fabric8 ao Resgate!Integrações e o ecossistema Java - Fabric8 ao Resgate!
Integrações e o ecossistema Java - Fabric8 ao Resgate!
 
Robot Framework no DevTests #34
Robot Framework no DevTests #34Robot Framework no DevTests #34
Robot Framework no DevTests #34
 
Code Igniter & Zend Framework Uma UniãO De Sucesso
Code Igniter & Zend Framework   Uma UniãO De SucessoCode Igniter & Zend Framework   Uma UniãO De Sucesso
Code Igniter & Zend Framework Uma UniãO De Sucesso
 
Datacenter na nuvem
Datacenter na nuvemDatacenter na nuvem
Datacenter na nuvem
 
Secomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - IntroduçãoSecomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - Introdução
 

HTTPMonkey - Cliente HTTP leve e flexível com middlewares

  • 1. HttpMonkey Github.com/rogerleite/http_monkey • Motivação • Funcionalidades • Middlewares • Run Forrest, run! Em 30 minutos!
  • 2. Motivação • Por que mais um http client? • Interface fluente • Aderente ao HTTP 1.1 • Ser fácil de usar e adaptável • Rack middlewares • Sempre magro (anoréxico)
  • 3. Funcionalidades Suporte ao essencial Minímo de dependências possível Essencial: • Methods, Headers and Response Codes • SSL, Proxy, Timeout, Authentication … etc. • Respeitar HTTP 1.1 (tirando o cache) Opcional: • Implementar em projetos separados • O cache é um ótimo exemplo de middleware
  • 4. Funcionalidades Custom Clients N Adapters Callbacks por code, array e range Middlewares a lá Rack Builder Exemplo simples de get
  • 5. Funcionalidades Interface fluente Representação do Request Mais Internals Configuração por Request A mesma interface do configure
  • 7. Middlewares Por que middlewares? Anatomia de um middleware Geralmente recebe: options via hash Block pra injetar comportamento Mega simples around filter
  • 10. Middlewares Futuro Fazer algo como “http_monkey-browsah” • Cache conforme “Caching in HTTP” do RFC 2616-sec13 • Cookies conforme “State Management Mechanism” do RFC 2109 Explorar Middlewares existentes • Rack::CommonLogger, Rack::Etag • Rack-contrib tem middlewares interessantes como Rack::Profiler, Rack::CommonCookies • Rack::Parser – decode/parse data into param hash Chamadas Assíncronas e Paralelas

Notas del editor

  1. IntroEstouhá 3 anosna Abril,sendo 2 anostrabalhando com Alexandria.Agenda
  2. Porquemais um client http?Da listagigante de clients, somente o faraday suportamiddlewares, queporsinalnãoé Rack “compliance”.Tópicos.
  3. Dependências: rack, httpiLess is moreEssencialé o que o HTTP 1.1 descreve, tirando o Cache.Métodos: GET, POST, PUT, DELETE e futuramente CUSTOM (como purge porexemplo)Headers é a base de comunicação dos requests e responses.Auth Basic, Digest, body gzippedtambémsãofuncionalidades do HttpMonkeyOpcional. O objetivoémanter o monkey magro, e desenvolvertudoem middleware.Cache e CookieStoresãoexemplos de middleware.
  4. Uso default.Criador de cliente. A gem podeserusadapordiferentesprojetos, cada um com a suaconfiguração.Suportavários adapters.Behaviours. Code, array ou range.Middlewares.
  5. Interface fluent – o EntryPointé a classequefaz a interface de “http options”, ouseja, vcinformaos headers, authentication, SSL etc.Configuracoespor request – Todas as opções de cnfiguração, lá do bloco do “build”, vc tem disponivel “por request”.
  6. Interface fluent – o EntryPointé a classequefaz a interface de “http options”, ouseja, vcinformaos headers, authentication, SSL etc.Configuracoespor request – Todas as opções de cnfiguração, lá do bloco do “build”, vc tem disponivel “por request”.
  7. Porquejáépadrãoestabelecido.Anatomia de um middleware. Começo, meio e fim.Initialize – voumostrarexemplos no proximo slide
  8. Middlewares built in. Osnomessão auto explicativos. :DMostrarosexemplos de initialize, options e blockFollow [301, 302, 303, 307] headers.
  9. Ciclo de vida do RequestCreate RequestCall Middlewares (with request)Do Request, receive ResponseBack to Middlewares (with request and response)Call Behaviours (client, request, response)Lembrarque a ordem dos middlewareséimportante!
  10. Aondequeremoschegar.Limite?Somente a imaginação.Browsah-packMiddlewaresexistentesRack middlewaresexistentes. Exemplo: o “VCR” em middleware.
  11. Mostrarcódigos!