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 est une application de console pour interagir avec les serveurs Web. C'est une façon amusante d'explorer les API Web et d'apprendre les tenants et aboutissants de HTTP.
Voyez ce qui a changé ces derniers temps en lisant l'historique du projet.
Cela ne pourrait pas être beaucoup plus facile.
$ gem install htty
Vous aurez besoin de Ruby et Rubygems. Il est connu pour bien fonctionner sous OS X contre Ruby v1.8.7, v1.9.2, v1.9.3, v2.0, v2.1 et v2.2.
Les choses que vous pouvez faire avec HTTY sont:
Voici quelques transcriptions de session HTTY annotées pour vous permettre de démarrer (les captures d'écran du terminal indiquées ici sont également disponibles sous forme textuelle).
Cet exemple simple montre comment explorer un service Web en lecture seule avec HTTY .
Vous pouvez pointer Htty à une URL Web complète ou partielle. Si vous ne fournissez pas d'URL, http://0.0.0.0/ (port 80) sera utilisé. Vous pouvez varier le schéma de protocole, l'utilisateur, l'hôte, le port, le chemin, la chaîne de requête et le fragment comme vous le souhaitez.
L'invite de shell HTTY affiche l'adresse de la demande actuelle.
La commande get est l'une des sept méthodes de demande HTTP prises en charge. Un résumé concis de la réponse est montré lorsque vous émettez une demande.
Vous pouvez suivre les redirectes à l'aide de la commande follow . Aucune demande n'est faite tant que vous ne tapez pas une commande de demande telle que get ou post .
Vous pouvez modifier les segments de l'adresse à volonté. Ici, nous naviguons dans la hiérarchie de chemin du site, que vous pouvez faire avec des PATHSpecs relatifs et absolus.
Ici, nous ajoutons des paramètres de corde de requête. Notez que les caractères qui nécessitent un codage d'URL sont automatiquement codés par URL (sauf s'ils font partie d'une expression codée par URL).
Les headers-response et les commandes body-response révèlent les détails d'une réponse.
Il y avait une certaine crup dans la réponse du service Web (une ligne horizontale, une référence de passage, des numéros de vers, un tampon d'auteur et des pauses de ligne). Nous l'éliminons en utilisant des options API fournies par le service Web à qui nous parlons.
Nous faisons une manœuvre de Julia Child et utilisons la commande address pour modifier l'URL entière, plutôt que d'ajouter des paramètres individuels à cordes de requête un par un.
Sortez de votre session à tout moment en tapant quit ou en appuyant sur Ctrl-D.
L’exemple suivant montre les fonctionnalités de support sécurisé HTTP et de cookies de HTTY , ainsi que la façon d’examiner et de revoir les demandes passées.
Le schéma https: // et le port 443 s'impliquent, tout comme le schéma http: // et le port 80 s'impliquent. Si vous omettez le schéma ou le port, il sera par défaut la valeur appropriée.
Notez que lorsque des cookies sont proposés dans une réponse, un astérisque audacieux (il ressemble à un cookie) apparaît dans le résumé de la réponse. Le même symbole de cookie apparaît à côté de l'en-tête Set-Cookie lorsque vous affichez des en-têtes de réponse.
La commande cookies-use copie les cookies de la réponse dans la demande suivante. Le symbole cookie apparaît à côté de l'en-tête cookie lorsque vous affichez les en-têtes de demande.
Une histoire abrégée est disponible via la commande history . Les informations sur les demandes de l'histoire comprennent la méthode de demande, l'URL, le nombre d'en-têtes (et un symbole de cookies, si les cookies étaient envoyés) et la taille du corps. Les informations sur les réponses dans l'histoire comprennent le code de réponse, le nombre d'en-têtes (et un symbole de cookies, si les cookies ont été reçus) et la taille du corps.
Notez que l'historique ne contient que des paires de demande et de réponse HTTP numérotées, pas un enregistrement de toutes les commandes que vous entrez.
La commande reuse fait une copie des en-têtes et du corps d'une demande antérieure sur laquelle vous pouvez construire.
Nous allons maintenant examiner la prise en charge de HTTP de base de HTTP de HTTY et apprendre à afficher les transcriptions non abrégées des séances HTTY .
Supposons que nous avons l'écoute d'application Sinatra suivante sur le port par défaut 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'
endCette demande s'attend à des demandes et à publier des demandes et répond de diverses manières artificielles.
Lorsque vous modifiez la partie UserInfo de l'adresse ou de l'adresse entière, l'en-tête d'authentification de base HTTP approprié est créé automatiquement pour vous. Notez que les caractères qui nécessitent un codage d'URL sont automatiquement codés par URL (sauf s'ils font partie d'une expression codée par URL).
Lorsque UserInfo est fourni dans une demande, un symbole mercantile audacieux ( @ ) apparaît à côté de l'en-tête d'autorisation résultante lorsque vous affichez les en-têtes de demande (voir ci-dessous).
Tapez body-set pour saisir les données du corps et terminez-le en entrant deux lignes vierges consécutives, ou en frappant Ctrl-D. Le corps ne sera envoyé que pour un poste et des demandes. L'en-tête de longueur de contenu appropriée est créé pour vous automatiquement (voir ci-dessous).
Différents codes de réponse sont rendus avec des couleurs qui suggèrent leur signification:
Comme pour l'histoire abrégée démontrée précédemment, l'histoire verbale montre une liste numérotée de demandes et les réponses qu'ils ont obtenues. Toutes les informations échangées entre le client et le serveur sont affichées.
Vous pouvez apprendre à utiliser les commandes HTTY à partir de HTTY .
La commande help prend un argument facultatif du nom abrégé ou complet d'une commande.
Signaler les défauts et les demandes de fonctionnalités sur les problèmes de GitHub.
Vos correctifs sont les bienvenus et vous recevrez une attribution ici pour de bonnes choses. Fourk le référentiel HTTY officiel et envoyer une demande de traction.
Après le clonage du référentiel, bin/setup pour installer des dépendances. rake pour exécuter les tests. Vous pouvez également bin/console pour obtenir une invite interactive qui vous permettra d'expérimenter.
Pour installer ce gemme sur votre machine locale, bundle exec rake install . Pour publier une nouvelle version, mettez à jour le numéro de version dans lib / httty / version.rb , puis bundle exec rake release , qui créera une balise GIT pour la version, pousse Git Commits and Tags, et poussera le fichier .gem sur RubyGems.org.
Restez en contact avec le projet HTTY en suivant @get_htty sur Twitter.
Vous pouvez également obtenir de l'aide dans la chaîne #HTTY sur Freenode.
L'auteur, Nils Jonsson, doit une dette d'inspiration au projet HTTP-console .
Merci aux contributeurs (par ordre alphabétique):
Libéré sous la licence du MIT.