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