HTTPie, un outil de type cURL convivial

cURL est un outil de ligne de commande couramment utilisé pour effectuer des requêtes HTTP. Dans ce tutoriel, nous allons examiner HTTPie, un outil de ligne de commande permettant de créer des requêtes HTTP conviviales. HTTPie utilise des commandes avec une syntaxe simple et naturelle et affiche le résultat de manière présentable. 

De la documentation officielle:

HTTPie (prononcé aitch-tee-tee-pie) est un client HTTP en ligne de commande. Son objectif est de rendre l’interaction de la CLI avec les services Web aussi conviviale que possible. Il fournit un simple http commande qui permet d’envoyer des requêtes HTTP arbitraires en utilisant une syntaxe simple et naturelle et d’afficher une sortie colorisée. HTTPie peut être utilisé pour tester, déboguer et interagir généralement avec des serveurs HTTP.

Commencer

Afin de démarrer avec HTTPie sur une machine Ubuntu, vous devez installer le paquet en utilisant apt-get.

sudo apt-get install httpie

Une fois installé, vous devez avoir HTTPie sur votre système. Essayez de faire une requête GET à n'importe quel site web en utilisant HTTPie:

http www.tutsplus.com

La requête ci-dessus donne la réponse suivante:

Cela ressemble à si HTTPie est installé et fonctionne sur votre système. Si vous regardez de plus près, la sortie en couleur de la commande ci-dessus indique que l'URL a été déplacée de manière permanente vers https://tutsplus.com. Par conséquent, pour effectuer une requête GET sur tutsplus, modifiez la requête:

http https://tutsplus.com

La requête ci-dessus renverrait la sortie HTML de la demande GET sur l'URL https://tutsplus.com.. 

Vu de la requête ci-dessus, la seule information HTTPie doit effectuer une demande est l'URL.

Exécution de requêtes de base à l'aide de HTTPie

Avant de plonger dans les commandes HTTPie, nous verrons comment exécuter les requêtes de base à l'aide de HTTPie. Nous allons utiliser json-server pour avoir un serveur factice opérationnel afin de faire des requêtes. Pour commencer à utiliser json-server, installez le serveur à l'aide de npm.

npm install -g json-server

Créez un fichier appelé index.js qui va créer des données aléatoires pour notre serveur factice.

// index.js module.exports = function () var data = utilisateurs: [] // Créez 5 utilisateurs pour (var i = 0; i < 5; i++)  data.users.push( id: i, name: 'user' + i )  return data 

Exécutez le serveur JSON en utilisant le index.js fichier.

json-server index.js

Le serveur devrait maintenant être opérationnel à l'adresse http: // localhost: 3000 /.

Demande GET utilisant HTTPie

Par défaut, si une adresse URL est donnée à HTTPie, celui-ci considère que le type de demande est GET et s'exécute en conséquence. Voici un exemple de OBTENIR demande:

http http: // localhost: 3000 / users

La demande ci-dessus affiche la sortie suivante:

HTTP / 1.1 200 OK Access-Control-Allow-Credentials: true Cache-Control: no-cache Connexion: keep-alive Content-Length: 212 Content-Type: application / json; charset = utf-8 Date: mar, 18 octobre 2016 03:40:15 GMT Heure: W / "d4-4 + 4 + bS4GA0 + D / tDXlF8voQ" Expire le: -1 Pragma: no-cache Varie: l'origine, accepte Codage de X-Content-Type-Options: nosniff X-Powered-By: Express ["id": 0, "nom": "utilisateur0", "id": 1, "nom": "utilisateur1", "id": 2, "name": "user2", "id": 3, "name": "user3", "id": 4, "name": "user4"] 

Requête POST utilisant HTTPie

Pour effectuer une demande POST à ​​l'aide de HTTPie, nous devons ajouter le mot-clé POST ainsi que les données à publier sur l'URL. Voici un exemple:

http POST http: // localhost: 3000 / users id = 007 nom = RoyAgasthyan

La commande afficherait la sortie suivante sur l'écran du terminal:

HTTP / 1.1 201 Création de contrôle d'accès-autorisation-informations d'identification: true Contrôle de cache: non-cache Connexion: keep-alive Longueur du contenu: 43 Content-Type: application / json; charset = utf-8 Date: mar, 18 octobre 2016 03:46:22 GMT Heure: W / "2b-mpj // lkYJiGiWBB42OLoKA" expire: -1 nombre de variables non modifiées: origine, méthode X-HTTP-Override , Accept-Encoding X-Content-Type-Options: nosniff X-Powered-By: Express "id": "007", "name": "RoyAgasthyan" 

Essayez de faire une requête GET en utilisant HTTPie, et vous devriez voir les nouvelles données postées dans la réponse.

Soumission de formulaires à l'aide de HTTPie

La soumission d'un formulaire est une autre demande généralement effectuée par un utilisateur. Avec HTTPie, il devient un peu plus facile de soumettre un formulaire sur une URL en spécifiant le forme option comme indiqué:

http --form POST www.votreformposturl.com name = "Roy"

Lorsque la commande ci-dessus est exécutée, le Type de contenu est automatiquement réglé sur application / x-www-form-urlencoded; jeu de caractères = utf-8, par conséquent, vous n'avez pas besoin de le définir explicitement.

Gestion de la redirection HTTP

Comme vous l'avez peut-être remarqué dans notre exemple précédent, HTTPie ne gère pas les redirections HTTP par défaut. Lorsque nous avons essayé de faire une demande GET sur www.tutsplus.com, un message indiquant que l’URL avait été déplacée a été affiché. Si vous voulez que HTTPie gère les redirections, vous devez ajouter une option appelée suivre à la commande request.

http --suivre www.tutsplus.com

La requête HTTPie ci-dessus gérerait les redirections HTTP, le cas échéant.

Télécharger des fichiers en utilisant HTTPie

HTTPie fournit une fonctionnalité permettant de télécharger des fichiers depuis un serveur, similaire à la commande wget. Pour télécharger le fichier, vous devez spécifier un Télécharger option avec l'URL.

http --download http://www.tutorialspoint.com/python/python_tutorial.pdf

La commande ci-dessus afficherait une réponse comme indiqué ci-dessous:

HTTP / 1.1 200 OK Accept-Ranges: octets En-têtes-Autoriser-Autoriser: X-Demandé-Avec Accès-Contrôler-Autoriser-Origine: * Longueur-Contenu: 3945951 Type-Contenu: application / pdf Date: mardi, 18 octobre 2016 04:01:43 GMT Etag: "3c35df-52fe21b892a6f" Dernière modification: jeu., 07 avril 2016 09:57:34 GMT Serveur: ECS (pnq / AF9A) X-Cache: HIT Téléchargement de 3,76 Mo vers "python_tutorial.pdf -1 "| 28,03% 1,05 Mo 63,85 kB / s 0:00:43 HE

Gestion de l'authentification

L'accès à une URL de service Web nécessiterait un type d'authentification quelconque. HTTPie prend en charge la plupart des mécanismes d'authentification couramment utilisés. Par défaut, HTTPie prend en charge l’authentification de base. Il vous suffit donc de transmettre le nom d’utilisateur et le mot de passe à la demande avec le mot de passe. -une option. 

http -a nom d'utilisateur: mot de passe www.mywebservice.com

Pour utiliser une authentification Digest, vous devez transmettre le nom du mécanisme d’authentification à l’aide du bouton -UNE option.

http -A digest -a nom d'utilisateur: mot de passe www.myservice.com

Personnaliser l'affichage de la réponse

Lorsque nous faisons une demande à une URL, toutes les données avec les informations d'en-tête sont affichées dans le terminal. HTTPie fournit une option pour personnaliser la réponse en sortie. Vous pouvez imprimer les informations individuelles d’en-tête et de corps en spécifiant le --entête et --corps option avec la demande.

http https://www.tutsplus.com --header

La commande ci-dessus affichera les informations d'en-tête comme indiqué:

HTTP / 1.1 301 Déplacement permanent CF-RAY: 2f6669f88fc43548-LHR Connexion: keep-alive Date: dimanche, 23 octobre 2016 16:02:32 GMT Emplacement: https://tutsplus.com/ Serveur: cloudflare-nginx Set-Cookie: __cfduid = dfea480f2567e7c463e66999adfdc73d71477238552; expire = lundi 23 octobre 17:02:32 GMT; chemin = /; domaine = .tutsplus.com; HttpOnly Transfer-Encoding: chunked 

Maintenant, si vous essayez la requête HTTP avec le --corps option, il ne faut imprimer que la partie du corps.

http www.google.com --body

La commande ci-dessus afficherait la sortie suivante:

   302 déplacés   

302 déplacés

Le document a été déplacé ici.

Maintien des sessions

Lors de l'utilisation de HTTPie, chaque demande est indépendante des autres demandes. Nous pouvons conserver des sessions au cas où nous souhaiterions la conserver pour d'autres requêtes HTTP. Pour maintenir une session, il suffit de créer une session nommée comme indiqué:

http --session = roy -a roy: mypass www.myservice.com

La commande ci-dessus créerait une session appelée roy qui peut être utilisé pour d'autres demandes en utilisant le nom de session. Voici un exemple qui utilise la session roy:

http --session = roy www.myservice.com

Terminaison automatique à l'aide de l'invite HTTP

Il peut être difficile de se souvenir de toutes les commandes liées à HTTPie. le http-invite Le toolkit fournit une fonctionnalité de saisie automatique pouvant être utilisée avec HTTPie. Pour commencer avec http-invite, installez-le en utilisant pépin:

sudo pip installer http-prompt

Pour démarrer une session, appelez http-invite avec l'URL du serveur que nous interrogerons. Redémarrez le serveur json que nous avons installé et invoquons le http-invite comme montré:

invite http http: // localhost: 3000 / users

Tapez quelques lettres de HTTP et l'auto-complétion devrait apparaître.

Tapez httpie et il devrait afficher l'URL que nous interrogeons.

http http: // localhost: 3000 / users

Toutes les commandes de requête HTTPie doivent fonctionner dans le http-invite. Essayez de taper dans GET et il devrait apparaître dans la saisie automatique. En entrant la commande GET, la réponse suivante devrait être affichée.

Envelopper

Dans ce tutoriel, nous avons vu comment démarrer avec HTTPie, Une alternative CURL plus respectueuse de l'homme. Nous avons vu comment effectuer les opérations de requête de base telles que GET et POST en utilisant HTTPie et quelques autres fonctionnalités. Pour des informations détaillées sur l'utilisation de HTTPie, jetez un coup d'œil à la documentation officielle. Consultez également la documentation officielle pour http-invite. Faites-nous savoir vos pensées dans les commentaires ci-dessous.