API - Extraction des utilisateurs

Version simple

1
import requests
2
url = 'https://prod.mydimomaintmx.cloud/IUT_EHC/connector/User/Filter'
3
4
headers = {
5
    'accept': 'application/json',
6
    'X-API-Key': 'ma6yphqcvou_glk8vlkoih-0-embqy0i.j_b_0twomnlg2!nlzbhk5-2x!mhv-krn0qheqer8w1snkxa',
7
    'Content-Type': 'application/json'
8
}
9
data = {
10
    "archived": False,
11
    "bodyNames": [
12
      "IUT EPINAL"
13
    ]
14
}
15
16
response = requests.post(url, headers=headers, json=data)
17
18
if response.status_code == 200:
19
    users = response.json() # Réponse de l'API en JSON
20
    for user in users:  
21
        print(user)  # On remarquera que les données brutes au format JSON sont difficilement lisibles
22
else:
23
    print("Une erreur s'est produite lors de la requête.")

Ecrire les données dans un fichier texte

1
import json # à ajouter en début de module
2
with open('users_data.txt', 'w') as file:
3
        json.dump(users, file, indent=4)
4
    print("Données JSON écrites dans le fichier 'users_data.txt'.")

Remarque

Ouvrir le fichier avec un éditeur de texte pour disposer d'un formatage plus lisible que le print en python

Transférer les données JSON vers un dataframe PANDAS

1
# Insérer en début de module
2
import pandas as pd
3
# Ligne existante
4
users_json = response.json()
5
# Appel PANDAS
6
df =pd.DataFrame(users_json)
7
print(df)
8
# Restriction aux colonnes souhaitées
9
users_df = df[['userName', 'firstName', 'lastName']]
10
print(users_df)
11
# Filtre des lignes où l'identifiant commence par '21'
12
filtered_df = users_df[users_df['userName'].astype(str).str.startswith('21')]
13
print(filtered_df) 

RemarqueTransformation des données JSON

Pandas permet de travailler de manière très simple avec une structure ligne-colonne proche de celle que l'on a l'habitude de manipuler avec le tableur.

Ecrire les données dans un fichier Excel

1
'''
2
Si openpyxl n'est pas déjà installé, vous pouvez l'installer via pip : pip3 install openpyxl
3
'''
4
# Écrire le DataFrame dans un fichier Excel
5
filtered_df.to_excel('Export_USERS.xlsx', sheet_name='users21', index=False, engine='openpyxl')
6

Remarque

La simplicité de Pandas est illustrée avec la génération du fichier EXCEL