SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances (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
 

En vedette (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
 

Similaire à HTTP Monkey

Similaire à HTTP Monkey (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
 

Dernier

Dernier (9)

ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

HTTP Monkey

  • 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

Notes de l'éditeur

  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!