Hoe HTTPie te gebruiken om te communiceren met API's vanaf de terminal

0
154

HTTPie is een HTTP-client voor uw terminal. HTTPie is ontworpen als een modern alternatief voor curl en vereenvoudigt de interactie met API's door een eenvoudige syntaxis en automatisch geformatteerde uitvoer aan te bieden.

Beschikbaar op Windows, Mac en Linux, het instellen ervan zou een eenvoudige zaak moeten zijn. De meeste Linux-distributies bevatten nu HTTPie in hun pakketrepository's, dus je kunt snel beginnen met apt, dnf of pacman. Het is ook beschikbaar via Homebrew voor Mac-gebruikers en als een Python-pakket geleverd via Pip op alle drie de platforms (pip install httpie).

Eenmaal geïnstalleerd, registreert HTTPie de http- en https-commando's in uw schelp. U heeft nu een eenvoudige en expressieve manier om API-eindpunten aan te roepen zonder uw terminal te verlaten!

Basisopdrachten

Op zijn eenvoudigst kan HTTPie een URL worden doorgegeven om onmiddellijk een GET-verzoek in te dienen:

http example.com

Om gegevens te verzenden, specificeert u het juiste HTTP-werkwoord en geeft u vervolgens uw sleutel/waarde-paren door als extra opdrachtregel parameters:

http POST example.com foo=bar hello=world Advertentie

Standaard worden gegevens verzonden als JSON met de juiste aanvraagheaders. Om in plaats daarvan als formulier te verzenden, geeft u de parameter -f door.

Houd er bij het gebruik van de JSON-syntaxis rekening mee dat alle velden normaal gesproken als tekenreeksen worden verzonden. U kunt de syntaxis := gebruiken in plaats van = om over te schakelen naar de modus voor onbewerkte gegevens. Een parameter examples:='[1, 2]' zal er dan toe leiden dat de voorbeeldsleutel wordt ingesteld op een array van twee gehele getallen.

Headers en cookies

Om een ​​verzoekheader in te stellen, specificeert u de naam en waarde van de header als een door dubbele punt gescheiden tekenreeks:

http GET example.com Authorization:foobar

HTTPie stelt enkele headers in, zoals Gebruiker – Agent, standaard. Deze kunnen worden verwijderd door ze expliciet te specificeren met een lege waarde.

Cookies worden ingesteld door een tekenreeks te definiëren met de cookies als door dubbele punten gescheiden waarden:

http GET example.com “Cookie:foo=bar;hello=world”

Dit is eigenlijk gewoon een speciaal geval van de Cookie-header instellen, dat is hoe cookies via HTTP worden verzonden.

Werken met bestanden

U kunt bestanden uploaden en downloaden met behulp van standaard shell-omleidingen :

http POST voorbeeld.com/upload < ~/voorbeeld.pdf http GET voorbeeld.com/download.pdf > ~/download.pdf Advertentie

U kunt ook bestanden uploaden als onderdeel van een HTTP-formulierinzending met behulp van de speciale @-syntaxis:

http -f POST example.com/form-with-file hello=”Hello World” myUpload@~/example.pdf < p>Dit werkt identiek aan een HTML-bestandsinvoer met name=”myUpload”. U kunt in plaats daarvan gegevens uit een bestand laden en deze in het verzoek insluiten met behulp van de =@-syntaxis, in plaats van @.

Sessies

HTTPie heeft ingebouwde ondersteuning voor persistente sessies. Hiermee kunt u verzoekcomponenten, zoals HTTP-headers en cookies, hergebruiken tussen verzoeken die aan dezelfde host zijn gedaan.

U maakt en gebruikt sessies door de parameter –session in te stellen. Geef als waarde het pad op naar een bestand dat zal worden gebruikt om uw nieuwe sessie op te slaan.

http –session=./my-session.json GET example.com Authorization:foobar

Gegevens die door sessies worden ondersteund, zoals de Authorization-header in het bovenstaande verzoek, worden nu in het bestand opgeslagen. Bij volgende verzoeken kunt u nu de Authorization header – het wordt automatisch opgenomen zoals het is gedefinieerd in uw sessie.

Advertentie

In plaats van een sessiebestand op te geven, kunt u ook een eenvoudige naam gebruiken (–session=example ). In dit geval zal HTTPie de sessie automatisch opslaan in een intern beheerd bestand. Elke sessie is gekoppeld aan de host waar deze vandaan komt, dus http –session=example example1.com en http –session=example example2.com zullen onafhankelijk van elkaar bestaan.

Uitvoer beheren

Een van de significante verbeteringen van HTTPie ten opzichte van hulpprogramma's zoals curl is de automatische opmaak van reacties. JSON-lichamen zijn bijzonder goed verwerkt, met de juiste inspringing, alfabetische sortering van objecten op hun sleutels en correcte conversie van Unicode-tekens.

U kunt aanpassen hoe uitvoer wordt weergegeven met behulp van een paar verschillende opties. De –pretty vlag kan worden ingesteld op –all (standaard), –colors (alleen kleuren), –format (alleen opmaak) of –none (om alle uitvoerverwerking uit te schakelen en de onbewerkte gegevens te zien).

Bovendien kunt u het kleurenschema wijzigen met de — stijl vlag. De beschikbare schema's zijn auto (de standaard), standaard (gebruik de onderliggende Pygments-bibliotheekstijlen), fruitig en de populaire monokai.

U hoeft zich geen zorgen te maken over de standaardopmaak bij het omleiden van uitvoer naar een bestand. HTTPie herkent dat het wordt omgeleid en stuurt de onbewerkte gegevens gewoon door zonder enige opmaak toe te passen. Dit betekent ook dat binaire reacties, die normaal nooit naar de terminal worden verzonden, in bestanden kunnen worden gepipetteerd.

Configuratiebestand

HTTPie ondersteunt een basisconfiguratie bestand dat kan worden gebruikt om standaardinstellingen te definiëren. Deze worden toegepast op alle verzoeken die u doet. Het bestand moet worden opgeslagen in ~/.config/httpie/config.json op Linux/Mac en %APPDATA%httpieconfig.json op Windows.

Advertentie

Een enkele configuratiesleutel wordt ondersteund, default_options, die een basisarray van parameters accepteert om toe te voegen aan HTTPie-opdrachten die u uitvoert:

{ "default_options": [ "Authorization:foobar", "–pretty=none" , "–style=monokai" ] }

Elke optie die wordt ondersteund door de opdrachtregelinterface van HTTPie kan worden opgenomen. U kunt uw standaardopties overschrijven door ze elke keer dat u HTTPie uitvoert met een nieuwe waarde te definiëren.

Conclusion

HTTPie is een tool vol functies die HTTP-API's biedt naar uw terminal. Het is een modern alternatief voor Unix-nietjes zoals curl dat is ontworpen voor regelmatig gebruik door ontwikkelaars en testers. Hoewel de syntaxis soms omslachtig kan zijn, is deze over het algemeen expressief en gedenkwaardig.

Het is de moeite waard de tijd te nemen om de officiële documentatie te lezen als u meer wilt weten over HTTP. Alle ontwikkeling vindt plaats in de open lucht op GitHub, met ondersteuning op Gitter en StackOverflow.