s s
.uef^" :8 :8 ..
:d88E .88 .88 @L
`888E :888ooo :888ooo 9888i .dL
888E .z8k -*8888888 -*8888888 `Y888k:*888.
888E~?888L 8888 8888 888E 888I
888E 888E 8888 8888 888E 888I
888E 888E 8888 8888 888E 888I
888E 888E .8888Lu= .8888Lu= 888E 888I
888E 888E ^%888* ^%888* x888N><888'
m888N= 888> 'Y" 'Y" "88" 888
`Y" 888 __ .__ 88F
J88" _/ |_| |__ ____ 98"
@% __ | _/ __ ./"
:" | | | Y ___/ ~`
|__| |___| /___ >
__________/_____/____________________
/ | __ ___/__ ___/______
/ ~ | | | | | ___/
Y /| | | | | |
___|_ / |____| |____| |____|
______/___________________.___.
__ ___/__ ___/__ | |
| | | | / | |
| | | | ____ |
|____| |____| / ______|
/
O HTTY é um aplicativo de console para interagir com servidores da Web. É uma maneira divertida de explorar as APIs da Web e aprender os meandros do HTTP.
Veja o que mudou ultimamente lendo a história do projeto.
Não poderia ser muito mais fácil.
$ gem install htty
Você precisará de Ruby e Rubygems. É conhecido por funcionar bem no OS X contra o Ruby v1.8.7, v1.9.2, v1.9.3, v2.0, v2.1 e v2.2.
As coisas que você pode fazer com htty são:
Aqui estão algumas transcrições de sessão HTTY anotadas para você começar (capturas de tela do terminal mostradas aqui também estão disponíveis em forma de texto).
Este exemplo simples mostra como explorar um serviço da web somente leitura com o HTTY .
Você pode apontar o HTTY em um URL da Web completo ou parcial. Se você não fornecer um URL, será usado http://0.0.0.0/ (porta 80). Você pode variar o esquema de protocolo, UserInfo, host, porta, caminho, string de consulta e fragmento como desejar.
O prompt de shell htty mostra o endereço da solicitação atual.
O comando get é um dos sete métodos de solicitação HTTP suportados. Um resumo conciso da resposta é mostrado quando você emite uma solicitação.
Você pode seguir os redirecionamentos usando o comando follow . Nenhuma solicitação é feita até que você digite um comando de solicitação, como get ou post .
Você pode ajustar segmentos do endereço à vontade. Aqui estamos navegando na hierarquia de caminho do site, o que você pode fazer com os pathspecs relativos e absolutos.
Aqui adicionamos parâmetros de cordas de consulta. Observe que os caracteres que exigem a codificação de URL são automaticamente codificados por URL (a menos que façam parte de uma expressão codificada por URL).
Os comandos headers-response e body-response revelam os detalhes de uma resposta.
Houve algum cruzamento na resposta do serviço da web (uma linha horizontal, uma referência de passagem, números de versos, carimbo de direitos autorais e quebras de linha). Nós o eliminamos usando as opções de API fornecidas pelo serviço da web com as quais estamos conversando.
Fazemos uma manobra de criança Julia e usamos o comando address para alterar todo o URL, em vez de adicionar parâmetros individuais de string de consulta um por um.
Saia da sua sessão a qualquer momento digitando quit ou atingir Ctrl-D.
O próximo exemplo demonstra os recursos de suporte e cookies HTTP da HTTY , bem como como revisar e revisitar solicitações anteriores.
O esquema https: // e a porta 443 implicam um ao outro, assim como o esquema http: // e a porta 80 implicam um ao outro. Se você omitir o esquema ou a porta, ele será inadimplente para o valor apropriado.
Observe que, quando os cookies são oferecidos em uma resposta, um asterisco ousado (parece um biscoito) aparece no resumo da resposta. O mesmo símbolo de cookie aparece ao lado do cabeçalho do conjunto de cookie ao exibir cabeçalhos de resposta.
O comando cookies-use copia os cookies da resposta para a próxima solicitação. O símbolo do cookie aparece ao lado do cabeçalho do cookie ao exibir cabeçalhos de solicitação.
Uma história abreviada está disponível através do comando history . Informações sobre solicitações no histórico incluem método de solicitação, URL, número de cabeçalhos (e um símbolo de biscoito, se os cookies foram enviados) e o tamanho do corpo. As informações sobre as respostas no histórico incluem código de resposta, número de cabeçalhos (e um símbolo de cookies, se os cookies foram recebidos) e o tamanho do corpo.
Observe que o histórico contém apenas pares de solicitação e resposta numerados numerados, não um registro de todos os comandos que você insere.
O comando reuse faz uma cópia dos cabeçalhos e do corpo de uma solicitação anterior para você construir.
Agora, examinaremos o suporte de autenticação básica HTTP da HTTY e aprenderemos como exibir transcrições não abreviadas de sessões HTTY .
Suponha que tenhamos o seguinte aplicativo Sinatra ouvindo na porta padrão de Sinatra, 4567.
require 'sinatra'
get '/all-good' do
[ 200 , [ [ 'Set-Cookie' , 'foo=bar; baz' ] ] , 'Hello World!' ]
end
put '/huh' do
[ 404 , 'What?' ]
end
delete '/hurl' do
[ 500 , 'Barf!' ]
end
post '/submit-novel' do
redirect '/all-good'
endEste aplicativo espera obter solicitações de obter e postar e responder de várias maneiras artificiais.
Quando você altera a parte UserInfo do endereço ou o endereço inteiro, o cabeçalho de autenticação básico HTTP apropriado é criado para você automaticamente. Observe que os caracteres que exigem a codificação de URL são automaticamente codificados por URL (a menos que façam parte de uma expressão codificada por URL).
Quando o UserInfo é fornecido em uma solicitação, um símbolo mercantil em negrito ( @ ) aparece ao lado do cabeçalho da autorização resultante ao exibir cabeçalhos de solicitação (veja abaixo).
Digite body-set para inserir dados do corpo e encerrá-los inserindo duas linhas em branco consecutivas ou atingindo o Ctrl-D. O corpo só será enviado para solicitações de postagem e colocação . O cabeçalho de comprimento de conteúdo apropriado é criado para você automaticamente (veja abaixo).
Diferentes códigos de resposta são renderizados com cores que sugerem seu significado:
Como na história abreviada demonstrada anteriormente, a história detalhada mostra uma lista numerada de solicitações e as respostas que eles provocaram. Todas as informações trocadas entre o cliente e o servidor são mostradas.
Você pode aprender a usar os comandos HTTY de dentro do HTTY .
O comando help leva um argumento opcional do nome abreviado ou completo de um comando.
Relatar defeitos e solicitações de recursos sobre problemas do GitHub.
Seus patches são bem -vindos e você receberá atribuição aqui para coisas boas. Bick o repositório oficial do HTTY e envie uma solicitação de tração.
Após clonar o repositório, bin/setup para instalar dependências. Em seguida, rake para executar os testes. Você também pode bin/console para obter um prompt interativo que permitirá experimentar.
Para instalar esta gema em sua máquina local, bundle exec rake install . Para lançar uma nova versão, atualize o número da versão no liberação do Lib/Htty/Version.rb e, em seguida, bundle exec rake release , que criará uma tag git para a versão, push git comete e tags e empurre o arquivo .gem para rubygems.org.
Mantenha contato com o projeto HTTY seguindo @get_htty no Twitter.
Você também pode obter ajuda no canal #HTTY no FreeNode.
O autor, Nils Jonsson, deve uma dívida de inspiração ao projeto HTTP-Console .
Graças aos colaboradores (em ordem alfabética):
Liberado sob a licença do MIT.