cURL er et vanlig kommandolinjeverktøy for å lage HTTP-forespørsler. I denne veiledningen tar vi en titt på HTTPie, et kommandolinjeværktøy for å lage HTTP-forespørsler på en menneskelig måte. HTTPie bruker kommandoer med enkle og naturlige syntaks og viser utgangen på en presentabel måte.
Fra de offisielle dokumentene:
HTTPie (uttalt aitch-tee-tee-pai) er en kommandolinje HTTP-klient. Målet er å gjøre CLI-samhandling med webtjenester så menneskevennlig som mulig. Det gir en enkelhttp
kommando som gjør det mulig å sende vilkårlig HTTP-forespørsler ved hjelp av en enkel og naturlig syntaks, og viser farget utdata. HTTPie kan brukes til testing, feilsøking og generelt interaksjon med HTTP-servere.
For å komme i gang med HTTPie på en Ubuntu-maskin, må du installere pakken ved hjelp av apt-get.
sudo apt-get install httpie
Når den er installert, bør du ha HTTPie på systemet. Prøv å lage en GET-forespørsel til et hvilket som helst nettsted ved å bruke HTTPie:
http www.tutsplus.com
Ovennevnte spørring gir følgende svar:
Det ser ut som om HTTPie er installert og fungerer på systemet ditt. Hvis du ser nøye ut, viser den fargede utgangen av kommandoen ovenfor at nettadressen er flyttet permanent til https://tutsplus.com. Derfor, for å gjøre en forespørsel om GET-forespørsel på tutsplus, må du endre spørringen:
http https://tutsplus.com
Ovennevnte spørring vil returnere HTML-utgangen av GET-forespørselen på URL https://tutsplus.com.
Som sett fra ovennevnte spørring, er den eneste informasjonen HTTPie
trenger å utføre en forespørsel er nettadressen.
Før du dykker dypt inn i HTTPie-kommandoer, ser vi på hvordan du utfører de grunnleggende forespørsler ved hjelp av HTTPie. Vi bruker Json-serveren til å få en dummy-server oppe for å stille forespørsler. For å komme i gang med json-server, installer serveren ved hjelp av npm.
npm installer -g json-server
Opprett en fil som heter index.js
som vil skape noen tilfeldige data for vår dummy server.
// index.js module.exports = function () var data = users: [] // Opprett 5 brukere for (var i = 0; i < 5; i++) data.users.push( id: i, name: 'user' + i ) return data
Kjør json-serveren ved hjelp av index.js
fil.
json-server index.js
Nå skal serveren være oppe på http: // localhost: 3000 /.
Som standard hvis en URL er gitt til HTTPie, antas det at forespørselstypen er GET og utfører tilsvarende. Her er et eksempel på a FÅ
be om:
http http: // localhost: 3000 / users
Ovennevnte forespørsel viser følgende utgang:
HTTP / 1.1 200 OK Tilgangskontroll-Tillat-legitimasjon: Sann Cache-Control: No-cache Tilkobling: Fortsatt Levende Innholdslengde: 212 Innholdstype: Application / json; Charset = utf-8 Dato: Tue, 18 Okt 2016 03:40:15 GMT ETag: W / "d4-4 + 4 + bS4GA0 + D / tDXlF8voQ" Utløper: -1 Pragma: no-cache Varighet: Opprinnelse, Godta- Koding av X-Content-Type-Alternativer: Nosniff X-Powered-By: Express ["id": 0, "navn": "user0", "id": 1, "navn": "user1", "id": 2, "navn": "user2", "id": 3, "navn": "user3", "id": 4, "navn": "user4"]
For å utføre en POST-forespørsel ved å bruke HTTPie, må vi legge til POST-søkeordet sammen med dataene som skal legges ut på nettadressen. Her er et eksempel:
http POST http: // localhost: 3000 / users id = 007 navn = RoyAgasthyan
Kommandoen viser følgende utgang på terminalskjermbildet:
HTTP / 1.1 201 Opprett Access-Control-Tillat-legitimasjon: Sann Cache-Control: No-cache Tilkobling: Fortsatt Levende Innholdslengde: 43 Innholdstype: Application / json; Charset = utf-8 Dato: Tue, 18 Okt 2016 03:46:22 GMT ETag: W / "2b-mpj // lkYJiGiWBB42OLoKA" Utløper: -1 Pragma: No-Cache Varighet: Opprinnelse, X-HTTP-Metode-Overstyring , Accept-Encoding X-Content-Type-Options: nosniff X-Powered-By: Express "id": "007", "navn": "RoyAgasthyan"
Prøv å gjøre en GET-forespørsel ved hjelp av HTTPie, og du bør se de nylig oppførte dataene i svaret.
Sende inn et skjema er en annen forespørsel som vanligvis utføres av en bruker. Med HTTPie blir det ganske enklere å sende inn et skjema over en URL ved å spesifisere skjema
alternativ som vist:
http - form POST www.yourformposturl.com name = "Roy"
Når kommandoen ovenfor blir utført, vil Innholdstype
er automatisk satt til application / x-www-skjema-urlencoded; charset = utf-8
, derfor trenger du ikke å angi det eksplisitt.
Som du kanskje har lagt merke til i vårt tidligere eksempel, håndterer HTTPie som standard ikke HTTP-omdirigeringer. Da vi prøvde å gjøre en GET-forespørsel på www.tutsplus.com, viste den en melding om at nettadressen hadde blitt flyttet. Hvis du vil ha HTTPie til å håndtere omadresser, må du legge til et alternativ som heter Følg
til forespørselen kommandoen.
http - følge www.tutsplus.com
Ovennevnte HTTPie-spørring vil håndtere HTTP-omdirigeringer, hvis noen.
HTTPie gir en funksjon for å laste ned filer fra en server, lik wget-kommandoen. For å laste ned filen må du spesifisere en nedlasting
alternativ sammen med nettadressen.
http - nedlasting http://www.tutorialspoint.com/python/python_tutorial.pdf
Kommandoen ovenfor vil vise et svar som vist nedenfor:
HTTP / 1.1 200 OK Godta-Rang: Bytes Access-Control-Tillat-Headers: X-Requested-Med Access-Control-Tillat-Origin: * Innholdslengde: 3945951 Innholdstype: Søknad / pdf Dato: Tue, 18 Okt 2016 04:01:43 GMT Etag: "3c35df-52fe21b892a6f" Sist endret: torsdag 07 april 2016 09:57:34 GMT Server: ECS (pnq / AF9A) X-Cache: HIT Nedlasting 3.76 MB til "python_tutorial.pdf -1 "| 28,03% 1,05 MB 63,85 kB / s 0:00:43 ETA
Å få tilgang til en webtjenesteadresse krever noen eller annen form for godkjenning. HTTPie støtter de fleste av de vanlige autentiseringsmekanismer. Som standard støtter HTTPie grunnleggende godkjenning, så du trenger bare å sende inn brukernavnet og passordet til forespørselen med -en
alternativ.
http -a brukernavn: passord www.mywebservice.com
Hvis du vil bruke en fordøyelsesautentisering, må du passere i godkjenningsmekanismens navn ved hjelp av -EN
alternativ.
http -A digest -a brukernavn: passord www.myservice.com
Når vi gjør en forespørsel til en URL, vises alle dataene sammen med headerinformasjonen i terminalen. HTTPie gir et alternativ til å tilpasse utgangsresponsen. Du kan skrive ut den enkelte header og kroppsinformasjon ved å spesifisere --Overskrift
og --kropp
alternativ sammen med forespørselen.
http https://www.tutsplus.com --header
Kommandoen ovenfor vil skrive ut topptekstinformasjonen som vist:
HTTP / 1.1 301 Flyttet permanent CF-RAY: 2f6669f88fc43548-LHR Tilkobling: Keep-alive Dato: søndag, 23 okt 2016 16:02:32 GMT Sted: https://tutsplus.com/ Server: cloudflare-nginx Set-Cookie: __cfduid = dfea480f2567e7c463e66999adfdc73d71477238552; utløper = ma, 23-okt-17 16:02:32 GMT; path = /; domene = .tutsplus.com; HttpOnly Transfer-Encoding: chunked
Nå, hvis du prøver HTTP-forespørselen sammen med --kropp
alternativ, det skal bare skrive ut kroppsdelen.
http www.google.com --body
Kommandoen ovenfor vil skrive ut følgende utgang:
302 flyttet 302 flyttet
Dokumentet er flyttet her.
Mens du bruker HTTPie, er hver forespørsel uavhengig av andre forespørsler. Vi kan holde økter hvis vi vil fortsette økten for andre HTTP-forespørsler. For å opprettholde en økt, er alt vi trenger å gjøre, å opprette en navngitt økt som vist:
http - session = roy-a roy: mypass www.myservice.com
Ovennevnte kommando ville opprette en økt kalt roy
som kan brukes til andre forespørsler ved å bruke øktnavnet. Her er et eksempel som bruker økten roy
:
http - session = roy www.myservice.com
Det kan være vanskelig å huske alle kommandoer relatert til HTTPie. De http-prompt
verktøykasse gir en automatisk komplett funksjon som kan brukes sammen med HTTPie. Å komme i gang med http-prompt
, installer den ved hjelp av pip
:
sudo pip installere http-prompt
For å starte en økt, påkalle http-prompt
med serveradressen som vi vil spørre om. Start på nytt JSON-serveren
at vi installerte og påkalle http-prompt
som vist:
http-prompt http: // localhost: 3000 / users
Skriv inn noen få bokstaver av HTTP, og den automatiske komplett skal vises.
Skriv inn httpie
og det skal vise nettadressen vi spør.
http http: // localhost: 3000 / users
Alle kommandoer for HTTPie-forespørsler skal fungere i http-prompt
. Prøv å skrive inn GET og det skal dukke opp i bilen, fullført. Ved å skrive inn GET-kommandoen, bør følgende svar vises.
I denne veiledningen så vi hvordan du kommer i gang med HTTPie
, et mer menneskelig vennlig cURL-alternativ. Vi så hvordan du gjør de grunnleggende forespørselsoperasjonene som GET og POST ved hjelp av HTTPie og noen andre funksjoner. For grundig informasjon om bruk HTTPie
, ta en titt på den offisielle dokumentasjonen. Sjekk også den offisielle dokumentasjonen for http-prompt
. Gi oss beskjed om dine tanker i kommentarene nedenfor.