Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. HTTP

HTTPie, come cURL ma molto più comodo

by
Difficulty:BeginnerLength:ShortLanguages:

Italian (Italiano) translation by Cristiano Verondini (you can also view the original English article)

cURL è uno strumento a riga di comando comunemente utilizzato per effettuare richieste utilizzando il protocollo HTTP. In questo tutorial vedremo come utilizzare HTTPie, uno strumento a riga di comando per realizzare richieste usando il protocollo HTTP in modo facilmente intuitivo. HTTPie utilizza comandi con una sintassi semplice e naturale e visualizza i risultati in una forma facilmente interpretabile.

Una citazione dalla documentazione ufficiale:

HTTPie (pronuncia aitch-tee-tee-pie) è un client HTTP eseguibile a riga di comando. Il suo obiettivo è quello di rendere l'interazione attraverso l'interfaccia comandi (CLI) con i servizi web il più semplice possibile. Fornisce un semplice comando (http) che permette di inviare richieste HTTP arbitrarie usando una sintassi semplice e naturale e fornisce i risultati in modo leggibile sfruttando i colori. HTTPie può essere utilizzato per effettuare test, debug e in generale per ogni interazione con server HTTP.

Iniziamo

Per iniziare con HTTPie su una macchina Ubuntu, è necessario dapprima installare il pacchetto usando il comando apt-get.

Una volta installato, HTTPie sarà disponibile per l'utilizzo sul sistema. Proviamo quindi ad effettuare una richiesta di tipo GET ad un qualsiasi server web usando HTTPie:

Questa richiesta fornirà la seguente risposta:

HTTP Response

Questo dimostra che HTTPie è installato e funzionante sul sistema. Guardando l'output generato dal comando precedente è facile capire che l'URL richiesta porta ad una redirezione verso https://tutsplus.com. Se quindi vogliamo ottenere il contenuto reale su tutsplus, è possibile modificare la richiesta in questo modo:

Questa richiesta restituirà l'output (in formato HTML) della richiesta di tipo GET dell'URL https://tutsplus.com.

Come abbiamo appena visto, l'unica informazione necessaria perché HTTPie possa effettuare una richiesta è la URL.

Effettuare semplici richieste usando HTTPie

Prima di analizzare in dettaglio i comandi messi a disposizione da HTTPie, vediamo come sia possibile eseguire le richieste più semplici. Per fare questo utilizzeremo json-server in modo da avere un server reale a cui collegarci ed effettuare richieste. Per fare questo è necessario dapprima procedere all'installazione del pacchetto utilizzando npm.

Creiamo poi un documento il cui nome sia index.js all'interno del quale faremo in modo che il server possa creare dati casuali a fronte delle richieste.

Avviamo quindi questo semplice server usando il documento index.js appena creato.

In questo modo il server dovrebbe essere funzionante e in ascolto all'URL http://localhost:3000/.

Usare HTTPie per richieste di tipo GET

Se non specificato altrimenti HTTPie supporrà che una richiesta ad un'URL specificata debba essere di tipo GET. Questo è un esempio di una richiesta di tipo GET:

Tale richiesta produrrà il seguente risultato:

Usare HTTPie per richieste di tipo POST

Per effettuare una richiesta di tipo POST usando HTTPie è necessario aggiungere la parola chiave POST e fornire inoltre i dati da inviare all'URL specificata. Ecco un esempio:

Il comando produrrà il seguente risultato sul terminale:

Se adesso proviamo a fare una richiesta di tipo GET vedremo come i dati della precedente richiesta siano stati correttamente acquisiti dal nostro server.

Usare HTTPie per inviare moduli (form)

Un altro tipo di richiesta comunemente usata è quella di invio di dati ad un form. Usando HTTPie l'invio di tali dati ad un'URL è estremamente semplice. Basterà infatti specificare l'opzione form come di seguito indicato:

Quando questo comando viene eseguito il Content-Type della richiesta è automaticamente impostato a application/x-www-form-urlencoded; charset=utf-8 senza la necessità di doverlo fare esplicitamente.

Come gestire i Redirect HTTP

Come è possibile vedere dal primo esempio che abbiamo fatto, HTTPie non gestisce automaticamente le redirezioni HTTP. Quando infatti abbiamo provato ad effettuare una richiesta di tipo GET all'URL www.tutsplus.com il risultato è stato un messaggio che indicava che l'URL richiesta era stata spostata. È però possibile fare in modo che HTTPie possa gestire in modo autonomo queste redirezioni semplicemente aggiungendo un'opzione chiamata follow al comando di richiesta.

Una richiesta impostata in questo modo fa sì che HTTPie segua eventuali redirezioni (se presenti).

Usare HTTPie per scaricare documenti

HTTPie fornisce una funzionalità per scaricare documenti da un server  in modo analogo a quanto fornito dal comando wget.. Per poter scaricare il documento è necessario specificare l'opzione download insieme all'URL nel comando.

Questo comando mostrerà la seguente risposta:

Gestione dell'autenticazione

In alcuni casi l'accesso ad un'URL di un server web può richiedere una qualche forma di autenticazione. HTTPie supporta la maggior parte dei meccanismi di autenticazione comunemente utilizzati. Se non specificato altrimenti, HTTPie supporta l'autenticazione di tipo 'basic authentication' per la quale è necessario passare solamente il nome utente e la password tramite l'opzione -a.

Se invece volessimo usare l'autenticazione di tipo 'digest authentication' sarà necessario passare anche il tipo di autenticazione da usare tramite l'opzione -A.

Personalizzazione della visualizzazione della risposta

Quando si effettua una richiesta a un URL, tutti i dati ricevuti vengono visualizzati sul terminale così come le informazioni contenute nell'intestazione della risposta (header). HTTPie fornisce un'opzione per modificare la visualizzazione della risposta. È possibile visualizzare le informazioni di intestazione e corpo in modo separato specificando le opzioni --header e --body nella richiesta.

Questo comando visualizzerà le informazioni di intestazione come di seguito:

Se invece proviamo ad eseguire la richiesta specificando l'opzione --body quello che otterremo sarà la visualizzazione del contenuto del corpo della risposta.

Questo comando produrrà infatti:

Gestione delle sessioni

Ogni richiesta effettuata tramite HTTPie è indipendente dalle altre. È però possibile mantenere la sessione fra una richiesta e le altre. Per fare ciò l'unica cosa da fare e quella di creare una sessione, cui daremo un nome, in questo modo:

Questo comando creerà una sessione il cui nome è roy che potrà essere utilizzata in seguito semplicemente specificando il nome fornito. Questo è un esempio di una richiesta che usa la sessione roy che abbiamo appena creato:

Completamento automatico dei comandi usando HTTP Prompt

Potrebbe essere difficile ricordare tutti i comandi forniti da HTTPie. Il kit http-prompt fornisce una funzionalità di completamento automatico che può essere usata assieme a HTTPie. Per poter usare http-prompt è però necessario procedere alla sua installazione utilizzando pip:

Per iniziare una sessione invochiamo il comando http-prompt specificando l'URL che vogliamo interrogare. Prima però riavviamo il server json-server che abbiamo creato. Poi invochiamo il comando http-prompt:

Sarà sufficiente cominciare a digitare alcune lettere di 'http' e il completamento automatico si attiverà.

A demo of the autocomplete

Scrivendo httpie dovrebbe venir mostrata l'URL che stiamo interrogando.

Tutti i comandi utilizzabili con HTTPie dovrebbero funzionare anche con http-prompt. Provando a scrivere 'get' dovrebbe attivarsi nuovamente il completamento automatico. Così facendo dovrebbe essere visualizzata la seguente risposta.

The response of a GET command

Conclusioni

In questo tutorial abbiamo visto alcuni comandi di HTTPie, un'alternativa più comoda all'uso di cURL. Abbiamo visto come effettuare semplici richiesta quali GET e POST utilizzando HTTPie e alcune altre sue funzionalità. Nel caso si desideri approfondire il funzionamento di HTTPie è possibile consultare la documentazione ufficiale. È possibile inoltre consultare anche la documentazione ufficiale di http-prompt. Fateci sapere cosa ne pensate nei commenti qui sotto.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.