O documento resume o HttpMonkey, um cliente HTTP para Ruby que tem como objetivos fornecer uma interface fluente e fácil de usar, aderir ao padrão HTTP 1.1 e permitir a utilização de middlewares semelhantes ao Rack. O documento explica as motivações, funcionalidades, middlewares e dá exemplos de uso do HttpMonkey.
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
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
IntroEstouhá 3 anosna Abril,sendo 2 anostrabalhando com Alexandria.Agenda
Porquemais um client http?Da listagigante de clients, somente o faraday suportamiddlewares, queporsinalnãoé Rack “compliance”.Tópicos.
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.
Uso default.Criador de cliente. A gem podeserusadapordiferentesprojetos, cada um com a suaconfiguração.Suportavários adapters.Behaviours. Code, array ou range.Middlewares.
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”.
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”.
Porquejáépadrãoestabelecido.Anatomia de um middleware. Começo, meio e fim.Initialize – voumostrarexemplos no proximo slide
Middlewares built in. Osnomessão auto explicativos. :DMostrarosexemplos de initialize, options e blockFollow [301, 302, 303, 307] headers.
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!
Aondequeremoschegar.Limite?Somente a imaginação.Browsah-packMiddlewaresexistentesRack middlewaresexistentes. Exemplo: o “VCR” em middleware.