cUrl

L'utilisation d'API, notamment REST entraîne l'usage de curl.

Voici une page qui illustre bien son utilisation :
https://linuxize.com/post/curl-rest-api/

quelques extraits traduits :

Les exemples ont recourt à https://jsonplaceholder.typicode.com/guide/, une API de test

HTTP POST

La méthode POST est utilisée pour créer une ressource sur le serveur. Si la ressource existe, elle est écrasée.

La commande suivante permet d'exécuter une requête POST utilisant des données précisées via l'option -d :

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

Le type du corps de la requête est défini par l'en-tête Content-Type. Par défaut, notamment si non précisé, curl utilisera Content-Type: application/x-www-form-urlencoded.

Pour envoyer des données formatés au format JSON, il faut définir le type à application/json :

curl -X POST \ -H "Content-Type: application/json" \ -d '{"userId": 5, "title": "Hello World", "body": "Post body."}' \ https://jsonplaceholder.typicode.com/posts # ou plus simplement src : https://daniel.haxx.se/blog/2022/02/02/curl-dash-dash-json/ # ne fonctionne pas avec curl v7.81 sous ubuntu 22.04 curl --json '{"userId": 5, "title": "Hello World", "body": "Post body."}' https://jsonplaceholder.typicode.com/posts

Pour utiliser un token de sécurité et préciser que notre paramètre JSON est un objet :

curl -X POST -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -H "Prefer: params=single-object" \ -d '{"userId": 5, "title": "Hello World", "body": "Post body."}' \ https://mon-web-service.mon-domaine.fr/rpc/ma-fonction
le token doit être mémorisé au préalable dans la variable d'environnement : export TOKEN="eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoic2lnX3VzZXIifQ.Q5gbPnMVYUwSxdjFzU3aMm2RVUAXN5dyfCc8__OVFaI"

Voir aussi

https://curl.se/

Insomnia

JSONPlaceholder, serveur REST pour faire des tests

postgrest

fetch api pour l'accès depuis un programme