2025-03-06
À la fin de ce TP, vous devez être capable de : - Interroger des APIs REST avec différents outils - Comprendre et utiliser la documentation OpenAPI - Implémenter des clients REST en Java
# Verbosité et debug
-v, --verbose # Affiche les détails de la requête/réponse
-s, --silent # Mode silencieux, supprime la barre de progression
# Méthodes HTTP
-X POST # Spécifie la méthode HTTP (GET, POST, PUT, DELETE...)
-d, --data # Envoie des données dans le corps de la requête
# Headers et authentification
-H, --header # Ajoute un header personnalisé
-u, --user # Basic auth (username:password)
# Format et données
-i # Inclut les headers dans la sortie
L’API ISS (Station Spatiale Internationale) ne nécessite pas d’authentification. http://open-notify.org/Open-Notify-API/ISS-Location-Now/
jq
est un utilitaire en ligne de commande pour traiter du JSON. Il permet de filtrer, transformer et formater les données JSON de manière élégante.
# Filtrer un tableau
curl -s "http://api.open-notify.org/astros.json" | jq '.people[] | select(.craft=="ISS")'
# Transformation de données
curl -s "http://api.open-notify.org/astros.json" | \
jq '.people[] | {astronaut: .name, vessel: .craft}'
# Comptage et statistiques
curl -s "http://api.open-notify.org/astros.json" | \
jq '.people | group_by(.craft) | map({craft: .[0].craft, count: length})'
Il faut généralement ajouter des paramètres à une requête pour obtenir des informations spécifiques. En particulier, une authentification sous la forme d’une clé API (token) est souvent nécessaire.
Créer un compte et obtenu un token pour https://openweathermap.org/appid#start puis https://home.openweathermap.org/api_keys Puis faites des requêtes pour obtenir la météo d’une ville. Attention, cela prend du temps.
Le résultat est en JSON, pour le formater, on peut utiliser jq
. La commande jq
permet de formater et filtrer des données JSON.
Il est aussi possible d’utiliser des options curl pour envoyer des paramètres.
Pour spécifier le format de la réponse ou envoyer des headers spécifiques, on peut utiliser des options curl.
# Demander du JSON
curl -v -H "Accept: application/json" "https://api.github.com/users/octocat"
# Demander un format spécifique de GitHub
curl -v -H "Accept: application/vnd.github.v3+json" "https://api.github.com/users/octocat"
Découvrez l’api Github en utilisant votre propre token. https://docs.github.com/en/rest/authentication/authenticating-to-the-rest-api
curl -s "https://nominatim.openstreetmap.org/search?q=Eiffel+Tower&format=json"|jq
OpenAPI est une spécification pour décrire des APIs REST. Elle permet de générer des clients dans de nombreux langages. Elle permet aussi de générer de la documentation et des tests.
A partir des exemples vus en cours et de la documentation de Jersey (https://eclipse-ee4j.github.io/jersey.github.io/documentation/latest31x/client.html), créez un client REST pour l’API REST de votre choix.
Quarkus est un framework Java pour les applications cloud-native. Il propose un client REST basé sur RESTEasy. A partir du tutoriel https://quarkus.io/guides/rest-client créer un client REST pour l’API de votre choix.
E. Bruno - Exercices pratiques REST