0% ont trouvé ce document utile (0 vote)
2 vues9 pages

Code

sdfcdvd

Transféré par

sirifast1
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
2 vues9 pages

Code

sdfcdvd

Transféré par

sirifast1
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

C'est un excellent défi !

Pour créer une API en Python, je vais choisir d'utiliser le framework


FastAPI. C'est actuellement l'un des choix les plus modernes et efficaces pour construire des
APIs de manière rapide et sécurisée.

📚 Le Projet Choisi : Une API de Gestion de Catalogue de Livres (Book Inventory)

Objectif : Créer une API simple qui permet de gérer un inventaire de livres. L'utilisateur
pourra ajouter de nouveaux livres, récupérer la liste complète, ou consulter les détails d'un
livre spécifique.

Technologies utilisées :

 Python 3.x (Le langage).

 FastAPI (Le framework pour construire l'API).

 Pydantic (Pour valider et structurer automatiquement les données entrantes et


sortantes, ce qui est essentiel dans une API).

Étape 1 : Préparation de l'environnement

Avant le code, vous devez installer les bibliothèques nécessaires. Ouvrez votre terminal ou
invite de commande :

bash

pip install fastapi "uvicorn[standard]" pydantic

pip install fastapi "uvicorn[standard]" pydantic

Étape 2 : Le Code Python (fichier [Link])

Voici tout le code que vous devez placer dans un fichier nommé [Link].

python

from fastapi import FastAPI, HTTPException

from pydantic import BaseModel # Utilisé pour définir les modèles de données

# --- Initialisation de l'application FastAPI ---

app = FastAPI(title="Book Inventory API", description="API simple pour gérer un catalogue de


livres.")

# --- 📚 Simulation d'une Base de Données (En mémoire) ---


# Dans une vraie application, cette liste serait remplacée par une connexion à PostgreSQL,
MongoDB, etc.

books_db = {}

next_book_id = 1

def get_mock_books():

"""Initialise quelques données factices pour le test."""

global next_book_id

# Premier livre (ID 1)

books_db[next_book_id] = {

"title": "Le Seigneur des Anneaux",

"author": "J.R.R. Tolkien",

"isbn": "978-0618266235",

"year": 1954

next_book_id += 1

# Exécuter l'initialisation des données au démarrage

get_mock_books()

# --- 📘 Définition du Modèle de Données avec Pydantic ---

# Pydantic assure que toute donnée qui entre ou sort respecte cette structure.

class Book(BaseModel):

title: str

author: str

isbn: str

year: int
# --- 🚀 Les Endpoints de l'API (Les fonctions métier) ---

# ENDPOINT 1 : Récupérer tous les livres (GET /books)

@[Link]("/books", response_model=list[Book])

def get_all_books():

"""Retourne la liste complète des livres dans le catalogue."""

return list(books_db.values())

# ENDPOINT 2 : Créer un nouveau livre (POST /books)

@[Link]("/books", response_model=Book)

def create_book(book: Book):

"""Ajoute un nouveau livre à l'inventaire."""

global next_book_id

# On assigne automatiquement le prochain ID disponible

new_book_data = [Link]()

books_db[next_book_id] = new_book_data

# Incrémente l'ID pour la prochaine création

next_book_id += 1

return books_db[next_book_id - 1]

# ENDPOINT 3 : Récupérer un livre spécifique (GET /books/{book_id})

@[Link]("/books/{book_id}", response_model=Book)

def get_book(book_id: int):


"""Récupère les détails d'un livre par son ID."""

if book_id not in books_db:

# Si le livre n'existe pas, on lève une exception HTTP 404

raise HTTPException(status_code=404, detail="Livre non trouvé.")

return books_db[book_id]

# ENDPOINT 4 : Mettre à jour un livre existant (PUT /books/{book_id})

@[Link]("/books/{book_id}", response_model=Book)

def update_book(book_id: int, book: Book):

"""Met à jour toutes les informations d'un livre existant."""

if book_id not in books_db:

raise HTTPException(status_code=404, detail="Livre non trouvé.")

# On met à jour l'entrée dans notre "base de données"

books_db[book_id] = [Link]()

return books_db[book_id]

# OPTIONNEL : Endpoints d'exemple pour les autres opérations (DELETE)

@[Link]("/books/{book_id}")

def delete_book(book_id: int):

"""Supprime un livre de l'inventaire."""

if book_id not in books_db:

raise HTTPException(status_code=404, detail="Livre non trouvé.")

del books_db[book_id]

return {"message": f"Le livre avec ID {book_id} a été supprimé."}


from fastapi import FastAPI, HTTPException

from pydantic import BaseModel # Utilisé pour définir les modèles de données

# --- Initialisation de l'application FastAPI ---

app = FastAPI(title="Book Inventory API", description="API simple pour gérer un catalogue de


livres.")

# --- 📚 Simulation d'une Base de Données (En mémoire) ---

# Dans une vraie application, cette liste serait remplacée par une connexion à PostgreSQL,
MongoDB, etc.

books_db = {}

next_book_id = 1

def get_mock_books():

"""Initialise quelques données factices pour le test."""

global next_book_id

# Premier livre (ID 1)

books_db[next_book_id] = {

"title": "Le Seigneur des Anneaux",

"author": "J.R.R. Tolkien",

"isbn": "978-0618266235",

"year": 1954

next_book_id += 1

# Exécuter l'initialisation des données au démarrage

get_mock_books()
# --- 📘 Définition du Modèle de Données avec Pydantic ---

# Pydantic assure que toute donnée qui entre ou sort respecte cette structure.

class Book(BaseModel):

title: str

author: str

isbn: str

year: int

# --- 🚀 Les Endpoints de l'API (Les fonctions métier) ---

# ENDPOINT 1 : Récupérer tous les livres (GET /books)

@[Link]("/books", response_model=list[Book])

def get_all_books():

"""Retourne la liste complète des livres dans le catalogue."""

return list(books_db.values())

# ENDPOINT 2 : Créer un nouveau livre (POST /books)

@[Link]("/books", response_model=Book)

def create_book(book: Book):

"""Ajoute un nouveau livre à l'inventaire."""

global next_book_id

# On assigne automatiquement le prochain ID disponible

new_book_data = [Link]()

books_db[next_book_id] = new_book_data

# Incrémente l'ID pour la prochaine création


next_book_id += 1

return books_db[next_book_id - 1]

# ENDPOINT 3 : Récupérer un livre spécifique (GET /books/{book_id})

@[Link]("/books/{book_id}", response_model=Book)

def get_book(book_id: int):

"""Récupère les détails d'un livre par son ID."""

if book_id not in books_db:

# Si le livre n'existe pas, on lève une exception HTTP 404

raise HTTPException(status_code=404, detail="Livre non trouvé.")

return books_db[book_id]

# ENDPOINT 4 : Mettre à jour un livre existant (PUT /books/{book_id})

@[Link]("/books/{book_id}", response_model=Book)

def update_book(book_id: int, book: Book):

"""Met à jour toutes les informations d'un livre existant."""

if book_id not in books_db:

raise HTTPException(status_code=404, detail="Livre non trouvé.")

# On met à jour l'entrée dans notre "base de données"

books_db[book_id] = [Link]()

return books_db[book_id]

# OPTIONNEL : Endpoints d'exemple pour les autres opérations (DELETE)


@[Link]("/books/{book_id}")

def delete_book(book_id: int):

"""Supprime un livre de l'inventaire."""

if book_id not in books_db:

raise HTTPException(status_code=404, detail="Livre non trouvé.")

del books_db[book_id]

return {"message": f"Le livre avec ID {book_id} a été supprimé."}

Étape 3 : Comment exécuter l'API (Testing)

1. Démarrer le serveur : Retournez dans votre terminal et lancez la commande


suivante :

bash

uvicorn main:app --reload

uvicorn main:app --reload

Explication : main fait référence à votre fichier [Link], : indique l'objet FastAPI, et app est le
nom de cette variable. --reload permet au serveur de redémarrer automatiquement quand
vous modifiez le code (très pratique en développement).

2. Tester l'API : Une fois que le terminal affiche un message indiquant que le serveur a
démarré (souvent [Link] votre API est active !

o Documentation Interactive : Le meilleur moyen de tester l'API est d'aller sur


[Link] FastAPI a généré automatiquement une interface
utilisateur (Swagger UI) qui vous permet de voir tous les endpoints, de
comprendre les requêtes attendues et de cliquer sur "Try it out" pour tester
chaque fonction directement dans votre navigateur.

🌟 Résumé du Fonctionnement

Méthode Endpoint
Description Exemple d'utilisation
HTTP URL

GET /books Récupère tous les livres. [Link]

POST /books Crée un nouveau livre Envoyez dans le corps la donnée : {"title":
Méthode Endpoint
Description Exemple d'utilisation
HTTP URL

(vous devez envoyer le


"DDD", "author": "Sark", ...}
JSON du livre).

Récupère un livre précis


GET /books/{id} [Link]
par son ID.

Modifie complètement les


[Link] (avec le
PUT /books/{id} données d'un livre
nouveau JSON)
existant.

Supprime un livre de
DELETE /books/{id} [Link]
l'inventaire.

Vous aimerez peut-être aussi