Introduzione

Application Program Interface (API) è un insieme di definizioni e protocolli che consente ai programmi software di comunicare tra loro.

Il termine REST sta per trasferimento di stato rappresentativo. È uno stile architettonico che consiste in una serie di vincoli da utilizzare durante la creazione di servizi Web.

L'API RESTful è un'API che segue l'architettura REST. In genere le API REST utilizzano il protocollo HTTP per l'invio e il recupero di dati e risposte in formato JSON. È possibile utilizzare i metodi HTTP standard per creare, visualizzare, aggiornare o eliminare risorse tramite l'API.

Per testare e interagire con le API RESTful, è possibile utilizzare qualsiasi libreria o strumento in grado di effettuare richieste HTTP.

Le richieste API sono composte da quattro parti diverse:

  • L'endpoint. Questo è l'URL utilizzato dal client per comunicare con il server.
  • Il metodo HTTP Indica al server quale azione desidera eseguire il client. I metodi più comuni sono GET POST PUT DELETE e PATCH
  • Le intestazioni (headers). Utilizzato per trasmettere informazioni aggiuntive tra il server e il client, ad esempio l'autorizzazione.
  • Il corpo (body). I dati inviati al server.

In questo articolo, discuteremo come utilizzare curl per interagire con le API RESTful. curlè  un'utilità della riga di comando per il trasferimento di dati da o verso un server remoto. È installato di default su macOS e sulla maggior parte delle distribuzioni Linux.

Opzioni di arricciatura

La sintassi per il comando curl è la seguente:

curl [options] [URL...]

Ecco le opzioni che utilizzeremo per effettuare richieste:

  • -X, --request - Il metodo HTTP da utilizzare.
  • -i, --include - Include le intestazioni di risposta.
  • -d, --data - I dati da inviare.
  • -H, --header - Intestazione aggiuntiva da inviare.

HTTP GET

Il metodo GET richiede una risorsa specifica dal server.

GET è il metodo predefinito quando si effettuano richieste HTTP con curl. Ecco un esempio di come effettuare una richiesta GET all'API JSONPlaceholder su una rappresentazione JSON di tutti i post:

curl https://jsonplaceholder.typicode.com/posts

Per filtrare i risultati utilizzare query params:

curl https://jsonplaceholder.typicode.com/posts?userId=1

POST HTTP

Il metodo POST viene utilizzato per creare una risorsa sul server. Se la risorsa esiste, viene sovrascritta.

Il seguente comando creerà un nuovo post utilizzando i dati specificati con l'opzione -d:

curl -X POST -d "userId=5&title=Hello World&body=Post body." https://jsonplaceholder.typicode.com/posts

Il tipo di corpo della richiesta viene specificato usando l'intestazione Content-Type. Per impostazione predefinita quando questa intestazione non viene fornita curl utilizza Content-Type: application/x-www-form-urlencoded

Per inviare un dato formattato JSON, impostare il tipo di corpo su application/json:

curl -X POST -H "Content-Type: application/json" -d '{"userId": 5, "title": "Hello World", "body": "Post body."}' https://jsonplaceholder.typicode.com/posts

HTTP PUT

Il metodo PUT viene utilizzato per aggiornare o sostituire una risorsa sul server. Sostituisce tutti i dati della risorsa specificata con i dati della richiesta.

curl -X PUT -d "userId=5&title=Hello World&body=Post body." https://jsonplaceholder.typicode.com/posts/5

HTTP PATCH

Il metodo PUT viene utilizzato per effettuare aggiornamenti parziali alla risorsa sul server.

curl -X PATCH -d "title=Hello Universe" https://jsonplaceholder.typicode.com/posts/5

HTTP DELETE

Il metodo DELETE rimuove la risorsa specificata dal server.

curl -X DELETE https://jsonplaceholder.typicode.com/posts/5

Autenticazione

Se l'endpoint API richiede l'autenticazione, è necessario ottenere una chiave di accesso. In caso contrario, il server API risponderà con il messaggio di risposta "Access Forbidden" o "Unauthorized".

Il processo per ottenere una chiave di accesso dipende dall'API che stai utilizzando. Una volta ottenuto il token di accesso, è possibile inserirlo nell'intestazione:

curl -X GET -H "Authorization: Bearer {ACCESS_TOKEN}" "https://api.server.io/posts"

Conclusione

Ti abbiamo mostrato come utilizzare curl per effettuare richieste API di test. Per ulteriori informazioni su curl, visitare la pagina della documentazione di Curl.