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
ePATCH
- 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.