Files
training.python.datascience/documentation/old-02-a-rest-services.md
Steve Kossouho d06fd5414d Rename documentation files
Removed new- prefix.
Added old- prefix to old files.
2025-07-12 17:03:38 +02:00

5.5 KiB

title, author
title author
Consommer des services REST Steve Kossouho

Consommer des services web REST


Une API REST, c'est quoi ?

Une API REST proposée par un service web, c'est quoi, et à quoi ça sert ? Voyons le scénario suivant : vous écrivez une application dans laquelle vous avez besoin de données géographiques. Quelles sont les solutions possibles ?

  1. Ajouter les données manuellement en les récupérant depuis des sources diverses brutes
  2. Exporter une source complète vers une base de données pour la réutiliser
  3. Les fameux services web

Principe général d'un service web

L'avantage du web, c'est que de nos jours, c'est facilement accessible. Accéder à un document consiste généralement à taper dans un navigateur son URL. L'idée d'un service web est de proposer sous forme de documents accessibles via un site, un ensemble de données qu'un développeur aurait du mal à obtenir de façon organisée par ses propres moyens.

C'est comme si vous aviez une base de données accessible depuis le web, que vous n'avez pas à maintenir, et qu'en plus vous ne risquez pas de casser.


Principe d'une API REST

Exemple d'usage d'API REST


Bibliothèques Python

Il existe plusieurs bibliothèques Python pour consommer des API REST. Parmi les plus populaires, on trouve requests et uplink.

La bibliothèque requests est une bibliothèque HTTP simple, capable de consommer une API REST. Elle est extrêmement facile à utiliser et prend en charge toutes les méthodes HTTP (GET, POST, PUT, DELETE, etc.)

Par exemple, pour faire une requête GET sur une API :

import requests

response = requests.get('https://api.example.com/resources')
print(response.json())

uplink est une bibliothèque qui vous permet de "transformer" une API REST en une classe Python. Vous pouvez définir une interface qui correspond à l'API et uplink se charge de générer les requêtes HTTP pour vous.

Voici un exemple d'utilisation de uplink :

from uplink import Consumer, get, Path

class GitHubAPI(Consumer):
    @get("/users/{username}")
    def get_user(self, username: Path):
        pass

github = GitHubAPI(base_url="https://api.github.com")
user = github.get_user(username="example")
print(user)

Consommer une API REST en Python

Pour consommer une API REST en Python, on utilisera souvent la bibliothèque requests. Supposons que nous voulons accéder à une API qui nous donne des informations sur des utilisateurs à partir de leur nom d'utilisateur.

import requests

username = 'example'
response = requests.get(f'https://api.example.com/users/{username}')

# Vérifier le statut de la requête
if response.status_code == 200:
    user_data = response.json()  # Convertir la réponse en JSON
    print(user_data)
else:
    print(f'Requête échouée avec le statut: {response.status_code}')

Authentification pour les API REST

De nombreuses API nécessitent une forme d'authentification pour accéder aux ressources. Il existe plusieurs mécanismes d'authentification, mais l'un des plus courants est l'authentification basée sur les tokens.

L'authentification basée sur les tokens signifie que vous devez envoyer un token spécial dans l'en-tête de votre requête HTTP. Ce token est généralement généré lorsque vous vous connectez à l'API.


Jetons d'authentification

La récupération d'un token d'authentification dépend beaucoup de l'API spécifique que vous utilisez. Toutefois, pour de nombreuses API, cela implique généralement d'envoyer une requête POST à un point de terminaison d'authentification, avec vos identifiants (par exemple, votre nom d'utilisateur et votre mot de passe).

Voici un exemple général :

import requests
import json

# URL du point de terminaison d'authentification
url = "https://api.example.com/auth"

# Vos identifiants
credentials = { 'username': 'your-username', 'password': 'your-password'}

# Envoi de la requête POST
response = requests.post(url, data=json.dumps(credentials))

# Vérification du statut de la requête
if response.status_code == 200:
    data = response.json()  # Convertir la réponse en JSON
    token = data.get('token')  # Extraction du token
    print(token)
else:
    print(f"Échec de l'authentification, statut: {response.status_code}")

N'oubliez pas de remplacer 'your-username', 'your-password' et l'URL par vos propres informations. Notez également que cet exemple suppose que l'API renvoie le token d'authentification sous forme de JSON avec la clé 'token'. Certaines API peuvent utiliser un schéma différent, vous devrez donc consulter la documentation de l'API pour les détails précis.

Faites également attention à ne pas exposer vos identifiants en dur dans votre code, notamment si celui-ci est partagé ou stocké dans un dépôt de versionnement public. Envisagez plutôt l'utilisation de variables d'environnement ou de fichiers de configuration sécurisés pour stocker ces informations sensibles.


Utiliser une API avec jeton d'authentification

Voici comment vous pouvez envoyer un token d'authentification avec requests :

headers = {'Authorization': 'Bearer <your-token>'}

response = requests.get('https://api.example.com/resources', headers=headers)
print(response.json())

N'oubliez pas de remplacer 'your-token' par votre véritable jeton d'authentification.


Ressources pour s'entraîner