HTTPie, ein menschenfreundliches CURL-ähnliches Tool

cURL ist ein häufig verwendetes Befehlszeilentool für HTTP-Anforderungen. In diesem Tutorial werfen wir einen Blick auf HTTPie, ein Befehlszeilenprogramm, mit dem Sie HTTP-Anforderungen auf benutzerfreundliche Weise ausführen können. HTTPie verwendet Befehle mit einer einfachen und natürlichen Syntax und zeigt die Ausgabe auf ansehnliche Weise an. 

Aus den offiziellen Dokumenten:

HTTPie (ausgesprochen Aitch-Tee-Tee-Pie) ist ein Befehlszeilen-HTTP-Client. Ihr Ziel ist es, die Interaktion von CLI mit Web-Services so menschlich wie möglich zu gestalten. Es bietet eine einfache http Befehl, der das Senden beliebiger HTTP-Anforderungen mit einer einfachen und natürlichen Syntax ermöglicht und farbige Ausgaben anzeigt. HTTPie kann zum Testen, Debuggen und allgemein zur Interaktion mit HTTP-Servern verwendet werden.

Fertig machen

Um mit HTTPie auf einem Ubuntu-Computer zu beginnen, müssen Sie das Paket mit apt-get installieren.

sudo apt-get install httpie

Nach der Installation sollten Sie HTTPie auf Ihrem System haben. Versuchen Sie, eine GET-Anfrage an eine Website zu senden, die HTTPie verwendet:

http www.tutsplus.com

Die obige Abfrage gibt die folgende Antwort:

Es sieht so aus, als ob HTTPie auf Ihrem System installiert ist und funktioniert. Wenn Sie genau hinschauen, zeigt die farbige Ausgabe des obigen Befehls, dass die URL dauerhaft zu https://tutsplus.com verschoben wurde. Um eine Abfrage der GET-Anforderung für tutsplus durchzuführen, ändern Sie die Abfrage:

http https://tutsplus.com

Die obige Abfrage würde die HTML-Ausgabe der GET-Anforderung unter der URL https://tutsplus.com zurückgeben. 

Wie aus der obigen Abfrage hervorgeht, die einzige Information HTTPie eine Anfrage durchführen muss, ist die URL.

Durchführen von Basisanforderungen mit HTTPie

Bevor wir uns eingehend mit HTTPie-Befehlen beschäftigen, werden wir uns die grundlegenden Anforderungen mit HTTPie ansehen. Wir verwenden den Json-Server, um einen Dummy-Server für Anfragen einzurichten. Um mit json-server zu beginnen, installieren Sie den Server mit npm.

npm install -g json-server

Erstellen Sie eine Datei mit dem Namen index.js Dadurch werden einige zufällige Daten für unseren Dummy-Server erstellt.

// index.js module.exports = function () var data = users: [] // Erstellen Sie 5 Benutzer für (var i = 0; i < 5; i++)  data.users.push( id: i, name: 'user' + i )  return data 

Führen Sie den Json-Server mit der index.js Datei.

json-server index.js

Jetzt sollte der Server unter http: // localhost: 3000 / betriebsbereit sein..

GET-Anfrage über HTTPie

Wenn standardmäßig eine URL an HTTPie übergeben wird, wird davon ausgegangen, dass der Anfragetyp GET ist, und er führt die entsprechende Aktion aus. Hier ist ein Beispiel von a ERHALTEN anfordern:

http http: // localhost: 3000 / benutzer

Die obige Anforderung zeigt die folgende Ausgabe an:

HTTP / 1.1 200 OK Access-Control-Allow-Credentials: true Cache-Control: kein Cache Verbindung: keep-alive Inhaltslänge: 212 Content-Type: application / json; charset = utf-8 Datum: Di, 18 Oct 2016 03:40:15 GMT ETag: W / "d4-4 + 4 + bS4GA0 + D / tDXlF8voQ" Läuft ab: -1 Pragma: no-cache Variieren: Herkunft, Akzeptieren X-Content-Type-Optionen kodieren: nosniff X-Powered-By: Express ["id": 0, "name": "user0", "id": 1, "name": "user1", "id": 2, "name": "user2", "id": 3, "name": "user3", "id": 4, "name": "user4"] 

POST-Anfrage über HTTPie

Um eine POST-Anforderung mit HTTPie auszuführen, müssen Sie das POST-Schlüsselwort zusammen mit den Daten hinzufügen, die an die URL gesendet werden sollen. Hier ist ein Beispiel:

http POST http: // localhost: 3000 / Benutzer-ID = 007 Name = RoyAgasthyan

Der Befehl zeigt die folgende Ausgabe auf dem Bildschirm des Terminals an:

HTTP / 1.1 201 Erstellt Access-Control-Allow-Credentials: true Cache-Control: kein Cache Verbindung: keep-alive Content-Length: 43 Content-Type: application / json; charset = utf-8 Datum: Di, 18 Oct 2016 03:46:22 GMT ETag: W / "2b-mpj // lkYJiGiWBB42OLoKA" Verfällt: -1 Pragma: no-cache Variieren: Herkunft, X-HTTP-Methode-Override , X-Content-Type-Optionen mit Akzept-Kodierung: nosniff X-Powered-By: Express "id": "007", "name": "RoyAgasthyan" 

Versuchen Sie, eine GET-Anfrage mit HTTPie auszuführen, und Sie sollten die neu veröffentlichten Daten in der Antwort sehen.

Formulare über HTTP senden

Das Senden eines Formulars ist eine weitere Anforderung, die üblicherweise von einem Benutzer ausgeführt wird. Mit HTTPie wird es wesentlich einfacher, ein Formular über eine URL zu senden, indem Sie die Option bilden Option wie gezeigt:

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

Wenn der obige Befehl ausgeführt wird, wird die Inhaltstyp wird automatisch auf gesetzt application / x-www-form-urlencoded; Zeichensatz = utf-8, Sie müssen es also nicht explizit setzen.

Umgang mit HTTP-Weiterleitung

Wie Sie vielleicht schon in unserem früheren Beispiel bemerkt haben, verarbeitet HTTPie standardmäßig keine HTTP-Weiterleitungen. Als wir versuchten, eine GET-Anfrage auf www.tutsplus.com zu erstellen, wurde eine Nachricht angezeigt, aus der hervorgeht, dass die URL verschoben wurde. Wenn HTTPie mit Umleitungen umgehen soll, müssen Sie eine Option hinzufügen Folgen zum Anforderungsbefehl.

http - folge www.tutsplus.com

Die obige HTTPie-Abfrage würde ggf. HTTP-Umleitungen verarbeiten.

Herunterladen von Dateien mit HTTPie

HTTPie bietet eine Funktion zum Herunterladen von Dateien von einem Server, ähnlich dem Befehl wget. Um die Datei herunterzuladen, müssen Sie ein angeben herunterladen Option zusammen mit der URL.

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

Der obige Befehl würde eine Antwort wie folgt anzeigen:

OK / Akzeptierte Bereiche: Bytes Access-Control-Allow-Header: X-Requested-With-Access-Control-Allow-Origin: * Inhaltslänge: 3945951 Inhaltstyp: application / pdf Datum: Di, 18 Okt 2016 04:01:43 GMT Tag: "3c35df-52fe21b892a6f" Letzte Änderung: Do, 07 Apr 2016 09:57:34 GMT Server: ECS (pnq / AF9A) X-Cache: HIT Herunterladen von 3.76 MB in "python_tutorial.pdf -1 "| 28,03% 1,05 MB 63,85 kB / s 0:00:43 ETA

Handhabung der Authentifizierung

Für den Zugriff auf eine Webdienst-URL ist eine Authentifizierung erforderlich. HTTPie unterstützt die meisten der häufig verwendeten Authentifizierungsmechanismen. Standardmäßig unterstützt HTTPie die Basisauthentifizierung. Sie müssen also nur den Benutzernamen und das Kennwort an die Anforderung mit übergeben -ein Möglichkeit. 

http -a Benutzername: Passwort www.mywebservice.com

Um eine Digest-Authentifizierung zu verwenden, müssen Sie den Namen des Authentifizierungsmechanismus mithilfe von angeben -EIN Möglichkeit.

http-ein Digest -a Benutzername: Passwort www.myservice.com

Anpassen der Antwortanzeige

Wenn wir eine Anfrage an eine URL senden, werden alle Daten zusammen mit den Header-Informationen im Terminal angezeigt. HTTP bietet eine Option zum Anpassen der Ausgabeantwort. Sie können die einzelnen Kopf- und Textinformationen drucken, indem Sie die Option angeben --Header und --Karosserie Option zusammen mit der Anfrage.

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

Der obige Befehl würde die Kopfinformationen wie gezeigt drucken:

HTTP / 1.1 301 Dauerhaft verschoben CF-RAY: 2f6669f88fc43548-LHR Verbindung: keep-alive Datum: So, 23 Oct 2016 16:02:32 GMT Ort: https://tutsplus.com/ Server: cloudflare-nginx Set-Cookie: __cfduid = dfea480f2567e7c463e66999adfdc73d71477238552; verfällt = Mo, 23-Oct-17 16:02:32 GMT; Pfad = /; domain = .tutsplus.com; HttpOnly Transfer-Encoding: chunked 

Nun, wenn Sie die HTTP-Anfrage zusammen mit der versuchen --Karosserie Option sollte nur der Hauptteil gedruckt werden.

http www.google.com --body

Der obige Befehl würde die folgende Ausgabe drucken:

   302 Umgezogen   

302 Umgezogen

Das Dokument wurde hierher verschoben.

Sitzungen pflegen

Während der Verwendung von HTTPie ist jede Anforderung unabhängig von anderen Anforderungen. Wir können Sitzungen beibehalten, falls wir die Sitzung für andere HTTP-Anforderungen beibehalten möchten. Um eine Sitzung aufrechtzuerhalten, müssen Sie lediglich eine benannte Sitzung erstellen (siehe Abbildung):

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

Der obige Befehl würde eine aufgerufene Sitzung erstellen Roy die für andere Anforderungen verwendet werden kann, indem der Sitzungsname verwendet wird. Hier ist ein Beispiel, das die Sitzung verwendet Roy:

http - session = roy www.myservice.com

Automatisch mit HTTP-Aufforderung ausfüllen

Es ist möglicherweise schwierig, sich alle Befehle im Zusammenhang mit HTTPie zu merken. Das http-Eingabeaufforderung Das Toolkit bietet eine automatische Vervollständigungsfunktion, die zusammen mit HTTPie verwendet werden kann. Um mit anzufangen http-Eingabeaufforderung, installiere es mit Pip:

sudo pip http-Eingabeaufforderung installieren

Um eine Sitzung zu starten, rufen Sie auf http-Eingabeaufforderung mit der Server-URL, die wir abfragen. Starten Sie das neu Json-Server dass wir das installiert und aufgerufen haben http-Eingabeaufforderung wie gezeigt:

http-Eingabeaufforderung http: // localhost: 3000 / users

Geben Sie einige Buchstaben HTTP ein und die automatische Vervollständigung sollte angezeigt werden.

Eintippen httpie und es sollte die URL anzeigen, die wir abfragen.

http http: // localhost: 3000 / benutzer

Alle HTTPie-Anforderungsbefehle sollten im System funktionieren http-Eingabeaufforderung. Versuchen Sie, GET einzugeben, und es sollte in der Autovervollständigung erscheinen. Bei der Eingabe des GET-Befehls sollte die folgende Antwort angezeigt werden.

Verpacken

In diesem Tutorial haben wir gesehen, wie Sie damit beginnen HTTPie, eine menschenfreundlichere CURL-Alternative. Wir haben gesehen, wie grundlegende Anforderungsoperationen wie GET und POST mit HTTPie und einigen anderen Funktionen ausgeführt werden. Für ausführliche Informationen zur Verwendung HTTPie, Schauen Sie sich die offizielle Dokumentation an. Lesen Sie auch die offizielle Dokumentation für http-Eingabeaufforderung. Teilen Sie uns Ihre Meinung in den Kommentaren unten mit.