Effectuer des requêtes GraphQL avec requests
Fonctions :
-
Effectuer une requête GraphQL avec requests
Lorsque vous effectuez une requête GraphQL, vous devez envoyer un corps de requête au format JSON dans lequel vous spécifiez les champs et les objets que vous voulez récupérer. Vous pouvez envoyer cette requête via la méthode POST de requests.
Importation :
import requests
Exemple de code :
import requests # URL de l'API GraphQL url = "https://api.exemple.com/graphql" # La requête GraphQL à envoyer query = """ { utilisateur(id: 1) { nom email } } """ # Définir les headers, spécifiant que la requête est au format JSON headers = { "Content-Type": "application/json" } # Effectuer la requête POST avec les données de la requête GraphQL response = requests.post(url, json={"query": query}, headers=headers) # Vérifier si la requête a réussi if response.status_code == 200: # Récupérer la réponse JSON data = response.json() # Afficher le nom et l'email de l'utilisateur print("Nom:", data['data']['utilisateur']['nom']) print("Email:", data['data']['utilisateur']['email']) else: print("Erreur lors de la requête", response.status_code)
Explication du code :
- La requête GraphQL est définie sous forme de chaîne de caractères
query
et envoyée via la méthodePOST
. - Le corps de la requête contient un dictionnaire avec une clé
"query"
, qui correspond à la requête GraphQL que vous souhaitez effectuer. - Le
response.json()
est utilisé pour convertir la réponse en JSON, ce qui vous permet de manipuler les données retournées.
- La requête GraphQL est définie sous forme de chaîne de caractères
-
Passer des variables dans la requête GraphQL
GraphQL vous permet de paramétrer les requêtes en utilisant des variables. Cela permet de rendre les requêtes plus dynamiques.
Exemple de code :
import requests # URL de l'API GraphQL url = "https://api.exemple.com/graphql" # La requête GraphQL avec des variables query = """ query GetUser($userId: ID!) { utilisateur(id: $userId) { nom email } } """ # Variables à passer dans la requête variables = { "userId": 1 } # Définir les headers headers = { "Content-Type": "application/json" } # Effectuer la requête POST avec la requête et les variables response = requests.post(url, json={"query": query, "variables": variables}, headers=headers) # Vérifier si la requête a réussi if response.status_code == 200: data = response.json() print("Nom:", data['data']['utilisateur']['nom']) print("Email:", data['data']['utilisateur']['email']) else: print("Erreur lors de la requête", response.status_code)
Explication du code :
$userId
dans la requête est une variable, et elle est passée dans le dictionnairevariables
.- Les variables permettent de rendre la requête plus flexible, en vous permettant de changer les paramètres sans modifier la requête elle-même.
-
Manipuler les erreurs dans les réponses GraphQL
Les requêtes GraphQL peuvent aussi renvoyer des erreurs spécifiques. Par conséquent, il est important de vérifier non seulement le code de statut HTTP, mais aussi les erreurs présentes dans la réponse JSON.
Importation :
import requests
Exemple de code :
import requests # URL de l'API GraphQL url = "https://api.exemple.com/graphql" # La requête GraphQL query = """ { utilisateur(id: 1) { nom email } } """ headers = { "Content-Type": "application/json" } # Effectuer la requête POST avec la requête GraphQL response = requests.post(url, json={"query": query}, headers=headers) # Vérifier si la requête a réussi if response.status_code == 200: data = response.json() # Vérifier les erreurs dans la réponse GraphQL if 'errors' in data: print("Erreurs GraphQL:", data['errors']) else: print("Nom:", data['data']['utilisateur']['nom']) print("Email:", data['data']['utilisateur']['email']) else: print("Erreur lors de la requête", response.status_code)
Explication du code :
data['errors']
permet de vérifier si des erreurs sont présentes dans la réponse GraphQL. Si des erreurs sont trouvées, elles sont affichées.- Si aucune erreur n'est présente, on continue à traiter les données de la réponse.
-
Effectuer des mutations avec GraphQL
Les mutations GraphQL sont utilisées pour modifier des données. Elles fonctionnent de manière similaire aux requêtes, mais avec des opérations qui changent les informations sur le serveur.
Exemple de code :
import requests # URL de l'API GraphQL url = "https://api.exemple.com/graphql" # Mutation pour modifier un utilisateur mutation = """ mutation UpdateUser($userId: ID!, $nom: String!, $email: String!) { updateUtilisateur(id: $userId, nom: $nom, email: $email) { nom email } } """ # Variables à passer dans la mutation variables = { "userId": 1, "nom": "Nouveau Nom", "email": "nouveau.email@exemple.com" } headers = { "Content-Type": "application/json" } # Effectuer la requête POST avec la mutation et les variables response = requests.post(url, json={"query": mutation, "variables": variables}, headers=headers) # Vérifier si la requête a réussi if response.status_code == 200: data = response.json() print("Nom mis à jour:", data['data']['updateUtilisateur']['nom']) print("Email mis à jour:", data['data']['updateUtilisateur']['email']) else: print("Erreur lors de la requête", response.status_code)
Explication du code :
- Mutation : Cette opération permet de mettre à jour les informations de l'utilisateur avec les nouvelles valeurs passées dans les variables.
- L'utilisation de mutations suit la même structure que les requêtes, mais elles modifient les données plutôt que de les récupérer.