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 /| | | | | |
___|_ / |____| |____| |____|
______/___________________.___.
__ ___/__ ___/__ | |
| | | | / | |
| | | | ____ |
|____| |____| / ______|
/
HTTY es una aplicación de consola para interactuar con los servidores web. Es una forma divertida de explorar API web y aprender los entresijos de HTTP.
Vea lo que ha cambiado últimamente leyendo la historia del proyecto.
No podría ser mucho más fácil.
$ gem install htty
Necesitarás Ruby y Rubygems. Se sabe que funciona bien bajo OS X contra Ruby v1.8.7, v1.9.2, v1.9.3, v2.0, v2.1 y v2.2.
Las cosas que puedes hacer con HTTY son:
Aquí hay algunas transcripciones de sesión HTTY anotadas para comenzar (las capturas de pantalla terminales que se muestran aquí también están disponibles en forma textual).
Este simple ejemplo muestra cómo explorar un servicio web de solo lectura con HTTY .
Puede señalar HTTY en una URL web completa o parcial. Si no suministra una URL, se utilizará http://0.0.0.0/ (puerto 80). Puede variar el esquema de protocolo, UserInfo, host, puerto, ruta, cadena de consulta y fragmento como desee.
La solicitud de shell HTTY muestra la dirección de la solicitud actual.
El comando get es uno de los siete métodos de solicitud HTTP admitidos. Se muestra un resumen conciso de la respuesta cuando emite una solicitud.
Puede seguir redireccionamientos usando el comando follow . No se realiza una solicitud hasta que escriba un comando de solicitud, como get o post .
Puede ajustar segmentos de la dirección a voluntad. Aquí estamos navegando por la jerarquía de rutas del sitio, que puede hacer con las rutas relativas y absolutas.
Aquí agregamos parámetros de cuerda de consultas. Observe que los caracteres que requieren codificación de URL están codificados automáticamente (a menos que formen parte de una expresión codificada por URL).
Los comandos de headers-response y body-response revelan los detalles de una respuesta.
Hubo algo de Cruft en la respuesta del servicio web (una línea horizontal, una referencia de pasaje, números de verso, un sello de derechos de autor y saltos de línea). Lo eliminamos utilizando las opciones API proporcionadas por el servicio web con el que estamos hablando.
Hacemos una maniobra de Julia Child y usamos el comando address para cambiar la URL completa, en lugar de agregar parámetros de cuerda de consulta individuales uno por uno.
Salga de su sesión en cualquier momento escribiendo quit o presionando CTRL-D.
El siguiente ejemplo demuestra las funciones de soporte y cookies seguro de HTTTY , así como cómo revisar y revisar las solicitudes pasadas.
El esquema https: // y el puerto 443 se implican entre sí, al igual que el esquema http: // y el puerto 80 se implican entre sí. Si omite el esquema o el puerto, se predeterminará el valor apropiado.
Observe que cuando se ofrecen cookies en una respuesta, aparece un asterisco audaz (parece una cookie) en el resumen de respuesta. El mismo símbolo de cookie aparece al lado del encabezado de cookie cuando muestra los encabezados de respuesta.
El comando cookies-use copias cookies fuera de la respuesta a la siguiente solicitud. El símbolo de la cookie aparece al lado del encabezado de las cookies cuando muestra encabezados de solicitud.
Una historia abreviada está disponible a través del comando history . La información sobre las solicitudes en el historial incluye método de solicitud, URL, número de encabezados (y un símbolo de cookies, si se enviaron cookies) y el tamaño del cuerpo. La información sobre las respuestas en el historial incluye código de respuesta, número de encabezados (y un símbolo de cookies, si se recibieron cookies) y el tamaño del cuerpo.
Tenga en cuenta que el historial contiene solo pares de solicitudes y respuesta HTTP numerados, no un registro de todos los comandos que ingrese.
El comando reuse hace una copia de los encabezados y el cuerpo de una solicitud anterior para que pueda construir.
Ahora analizaremos el soporte de autenticación básico HTTP de HTTY y aprenderemos cómo mostrar transcripciones no aborviadas de sesiones HTTY .
Suponga que tenemos la siguiente aplicación de Sinatra escuchando en el puerto predeterminado 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'
endEsta aplicación espera solicitudes de recibir y publicar de varias maneras artificiales.
Cuando cambia la porción de usuario de la dirección, o la dirección completa, el encabezado de autenticación básico HTTP apropiado se crea automáticamente para usted. Observe que los caracteres que requieren codificación de URL están codificados automáticamente (a menos que formen parte de una expresión codificada por URL).
Cuando UserInfo se suministra en una solicitud, aparece un símbolo Mercantile en negrita ( @ ) junto al encabezado de autorización resultante cuando muestra los encabezados de solicitud (ver más abajo).
Escriba body-set para ingresar datos del cuerpo y termínelo ingresando dos líneas en blanco consecutivas, o presionando CTRL-D. El cuerpo solo se enviará para solicitudes de publicación y pronosticación . El encabezado apropiado de contenido se crea automáticamente (ver más abajo).
Diferentes códigos de respuesta se representan con colores que sugieren su significado:
Al igual que con la historia abreviada demostrada anteriormente, la historia verbosa muestra una lista numerada de solicitudes y las respuestas que provocaron. Se muestra toda la información intercambiada entre el cliente y el servidor.
Puede aprender a usar comandos HTTY desde HTTY .
El comando help toma un argumento opcional del nombre abreviado o completo de un comando.
Informe defectos y solicitudes de funciones sobre temas de GitHub.
Sus parches son bienvenidos, y recibirá una atribución aquí por cosas buenas. Bifurca el repositorio oficial de HTTY y envíe una solicitud de extracción.
Después de clonar el repositorio, bin/setup para instalar dependencias. Luego rake para ejecutar las pruebas. También puede bin/console para obtener un mensaje interactivo que le permita experimentar.
Para instalar esta gema en su máquina local, bundle exec rake install . Para lanzar una nueva versión, actualice el número de versión en lib/htty/versión.rb , y luego bundle exec rake release , que creará una etiqueta GIT para la versión, Push Git Commits and Tags, y empuje el archivo .gem a rubyGems.org.
Manténgase en contacto con el proyecto HTTY siguiendo @get_htty en Twitter.
También puede obtener ayuda en el canal #HTTY en Freenode.
El autor, Nils Jonsson, debe una deuda de inspiración para el proyecto HTTP-console .
Gracias a los contribuyentes (en orden alfabético):
Liberado bajo la licencia MIT.