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 simplehttp
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.
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.
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 /.
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"]
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.
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.
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.
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
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
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.
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
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.
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.