HTTPie, ett mänskligt vänligt cURL-liknande verktyg

cURL är ett vanligt kommandoradsverktyg för att göra HTTP-förfrågningar. I den här handledningen tar vi en titt på HTTPie, ett kommandoradsverktyg för att göra HTTP-förfrågningar på ett mänskligt sätt. HTTPie använder kommandon med enkel och naturlig syntax och visar resultatet på ett presentabelt sätt. 

Från de officiella dokumenten:

HTTPie (uttalad Aitch-tee-tee-pie) är en kommandorad HTTP-klient. Målet är att göra CLI-samverkan med webbtjänster så humanvänlig som möjligt. Det ger en enkel http kommando som tillåter att skicka godtyckliga HTTP-förfrågningar med en enkel och naturlig syntax och visar färgad utgång. HTTPie kan användas för att testa, felsöka och generellt interagera med HTTP-servrar.

Komma igång

För att komma igång med HTTPie på en Ubuntu-maskin måste du installera paketet med apt-get.

sudo apt-get install httpie

När det är installerat bör du ha HTTPie på ditt system. Försök att göra en GET-förfrågan till vilken webbplats som helst som använder HTTPie:

http www.tutsplus.com

Ovanstående fråga ger följande svar:

Det ser ut som om HTTPie är installerat och arbetar på ditt system. Om du tittar noga visar den färgade utgåvan av ovanstående kommando att webbadressen har flyttats permanent till https://tutsplus.com. För att göra en GET-förfråganfråga på tutsplus, ändra sedan frågan:

http https://tutsplus.com

Ovanstående fråga skulle returnera HTML-utmatningen från GET-förfrågan på webbadressen https://tutsplus.com. 

Som framgår av ovanstående fråga är den enda informationen HTTPie behöver utföra en förfrågan är URL-adressen.

Utföra grundläggande förfrågningar med HTTPie

Innan vi dyker djupt in i HTTPie-kommandon tar vi en titt på hur man utför de grundläggande förfrågningarna med HTTPie. Vi använder sig av json-servern för att få en dummy-server igång för att göra förfrågningar. För att komma igång med json-servern, installera servern med hjälp av npm.

npm installera -g json-server

Skapa en fil som heter index.js vilket kommer att skapa några slumpmässiga data för vår dummy-server.

// index.js module.exports = function () var data = users: [] // Skapa 5 användare för (var i = 0; i < 5; i++)  data.users.push( id: i, name: 'user' + i )  return data 

Kör json-servern med hjälp av index.js fil.

json-server index.js

Nu ska servern vara igång på http: // localhost: 3000 /.

GET-förfrågan med HTTPie

Som standard om en URL ges till HTTPie antas det att förfrågningstypen är GET och utför det i enlighet därmed. Här är ett exempel på a SKAFFA SIG begäran:

http http: // localhost: 3000 / users

Ovanstående förfrågan visar följande utmatning:

HTTP / 1.1 200 OK Access-Control-Tillåt-Credentials: Sann Cache-Control: No-Cache Anslutning: Fortsätt Levande Innehållslängd: 212 Innehållstyp: Application / json; charset = utf-8 Datum: tis, 18 okt 2016 03:40:15 GMT ETag: W / "d4-4 + 4 + bS4GA0 + D / tDXlF8voQ" Utgår: -1 Pragma: ingen cache Varian: Ursprung, Acceptera Kodning av X-Content-Type-Alternativ: Nosniff X-Powered-By: Uttryck ["id": 0, "namn": "user0", "id": 1, "namn": "user1", "id": 2, "namn": "user2", "id": 3, "namn": "user3", "id": 4, "namn": "user4"] 

POST-begäran med HTTPie

För att utföra en POST-förfrågan med HTTPie måste vi lägga till POST-sökordet tillsammans med de data som ska läggas ut på webbadressen. Här är ett exempel:

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

Kommandot skulle visa följande utmatning på terminalskärmen:

HTTP / 1.1 201 Skapat Access-Control-Allow-Credentials: Sann Cache-Control: No-Cache Anslutning: Keep-Alive Innehållslängd: 43 Innehållstyp: Application / json; charset = utf-8 Datum: tis, 18 okt 2016 03:46:22 GMT ETag: W / "2b-mpj // lkYJiGiWBB42OLoKA" Förfaller: -1 Pragma: ingen cache Varian: Ursprung, X-HTTP-metod-Åsidosätt , Accept-Encoding X-Content-Type-Options: nosniff X-Powered-By: Express "id": "007", "namn": "RoyAgasthyan" 

Försök att göra en GET-förfrågan med HTTPie, och du bör se de nyupplagda uppgifterna i svaret.

Skicka in formulär med HTTPie

Skicka in ett formulär är en annan begäran som vanligtvis utförs av en användare. Med HTTPie blir det ganska lättare att skicka en blankett över en URL genom att ange form alternativet som visas:

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

När ovanstående kommando utförs, Innehållstyp ställs automatiskt in på application / x-www-form-urlencoded; charset = utf-8, Därför behöver du inte uttrycka det tydligt.

Hantering av HTTP-omdirigering

Som du kanske har märkt i vårt tidigare exempel hanterar HTTPie som standard inte HTTP-omdirigeringar. När vi försökte göra en GET-förfrågan på www.tutsplus.com visade det ett meddelande om att URL-adressen hade flyttats. Om du vill att HTTPie ska hantera omdirigeringar måste du lägga till ett alternativ som heter Följ till begäran kommandot.

http - följ www.tutsplus.com

Ovanstående HTTPie-fråga skulle hantera HTTP-omdirigeringar, om några.

Hämta filer med HTTPie

HTTPie ger en funktion att ladda ner filer från en server, liknande wget-kommandot. För att ladda ner filen måste du ange a ladda ner alternativ tillsammans med webbadressen.

http - ladda ner http://www.tutorialspoint.com/python/python_tutorial.pdf

Ovanstående kommando skulle visa ett svar som visas nedan:

HTTP / 1.1 200 OK Accept-Ranges: Bytes Access-Control-Tillåt-Headers: X-Requested-Med Access-Control-Allow-Origin: * Innehållslängd: 3945951 Innehållstyp: Application / pdf Datum: tis, 18 okt 2016 04:01:43 GMT Etag: "3c35df-52fe21b892a6f" Senast ändrad: torsdag 07 april 2016 09:57:34 GMT Server: ECS (pnq / AF9A) X-Cache: HIT Nedladdning 3,76 MB till "python_tutorial.pdf -1 "| 28,03% 1,05 MB 63,85 kB / s 0:00:43 ETA

Hantering av autentisering

Åtkomst till en webbtjänstadress skulle kräva någon eller annan typ av autentisering. HTTPie stöder de flesta av de vanliga verifieringsmekanismerna. Som standard stöder HTTPie grundläggande autentisering, så du behöver bara skicka in användarnamnet och lösenordet till begäran med -en alternativ. 

http -a användarnamn: lösenord www.mywebservice.com

För att kunna använda en digest-autentisering måste du skicka i autentiseringsmekanismens namn med hjälp av -en alternativ.

http -A digest -a användarnamn: lösenord www.myservice.com

Anpassa svarskärmen

När vi gör en förfrågan till en URL visas alla data tillsammans med rubrikinformationen i terminalen. HTTPie ger ett alternativ att anpassa utmatningssvaret. Du kan skriva ut den enskilda huvud- och kroppsinformationen genom att ange --rubrik och --kropp alternativ tillsammans med begäran.

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

Ovanstående kommando skulle skriva ut rubrikinformationen som visas:

HTTP / 1.1 301 Flyttade permanent CF-RAY: 2f6669f88fc43548-LHR Anslutning: Keep-Alive Datum: sön 23 okt 2016 16:02:32 GMT Plats: https://tutsplus.com/ Server: cloudflare-nginx Set-Cookie: __cfduid = dfea480f2567e7c463e66999adfdc73d71477238552; löper ut = mån, 23-okt-17 16:02:32 GMT; path = /; domän = .tutsplus.com; HttpOnly Transfer-Encoding: chunked 

Nu, om du försöker HTTP-förfrågan tillsammans med --kropp alternativ, det borde bara skriva ut kroppsdelen.

http www.google.com --body

Ovanstående kommando skulle skriva ut följande utmatning:

   302 Flyttad   

302 Flyttad

Dokumentet har flyttats hit.

Underhålla sessioner

När du använder HTTPie är varje förfrågan oberoende av andra förfrågningar. Vi kan hålla sessioner om vi vill fortsätta sessionen för andra HTTP-förfrågningar. För att behålla en session är allt vi behöver göra för att skapa en namngiven session som visas:

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

Ovanstående kommando skulle skapa en session som heter roy som kan användas för andra förfrågningar genom att använda sessionsnamnet. Här är ett exempel som använder sessionen roy:

http - session = roy www.myservice.com

Automatisk slutförd med HTTP-prompten

Det kan vara svårt att komma ihåg alla kommandon relaterade till HTTPie. De http-prompten verktygslåda ger en automatisk komplett funktion som kan användas tillsammans med HTTPie. För att komma igång med http-prompten, installera den med pip:

sudo pip installera http-prompt

För att starta en session, åberopa http-prompten med serverns URL som vi kommer att fråga. Starta om json-server som vi installerade och påkalla http-prompten som visat:

http-prompt http: // localhost: 3000 / users

Skriv in några bokstäver av HTTP och auto-komplett ska dyka upp.

Skriv in httpie och den ska visa webbadressen vi frågar.

http http: // localhost: 3000 / users

Alla HTTPie-förfrågningskommandon ska fungera i http-prompten. Prova att skriva in GET och det ska dyka upp i auto-komplett. När du anger GET-kommandot ska följande svar visas.

Wrapping It Up

I denna handledning såg vi hur vi började med HTTPie, ett mer mänskligt vänligt cURL-alternativ. Vi såg hur man gör de grundläggande förfrågningsoperationerna som GET och POST med HTTPie och några andra funktioner. För djup information om användning HTTPie, ta en titt på den officiella dokumentationen. Titta även på den officiella dokumentationen för http-prompten. Låt oss veta dina tankar i kommentarerna nedan.