Files
live-campus-mcs-p-2027.2/Semaine_11/Jour_01/Exercice 1.3 - API REST d'invent.md
T
gauvainboiche 0d071d2843 Semaine 11
2026-07-11 21:38:00 +02:00

27 lines
1.5 KiB
Markdown

## Exercice 1.3 — API REST d'inventaire **sans framework**
**Compétences visées :** comprendre HTTP/REST « de l'intérieur » — méthodes, codes de statut, JSON — en n'utilisant **que la bibliothèque standard**.
**Contexte :** vous exposez l'inventaire via une petite API REST bâtie avec le module `http.server`. **Flask, Django et toute bibliothèque tierce sont interdits.**
**Consignes :**
1. Utilisez `http.server.BaseHTTPRequestHandler` et `HTTPServer`.
2. Stockez les équipements dans une **liste Python en mémoire** (`id`, `hostname`, `ip`).
3. `GET /equipements` → renvoie la liste en JSON, code **200**.
4. `GET /equipements/<id>` → renvoie l'équipement (**200**), une erreur JSON **404** s'il n'existe pas, **400** si l'`id` n'est pas un entier.
5. `POST /equipements` → crée un équipement à partir du JSON du corps ; renvoie **201** et l'objet créé ; renvoie **400** si `hostname` manque ou si le JSON est invalide.
6. Toutes les réponses portent l'en-tête `Content-Type: application/json`.
7. Testez votre API (serveur lancé sur le port 8000) :
```bash
curl http://127.0.0.1:8000/equipements
curl http://127.0.0.1:8000/equipements/1
curl -X POST http://127.0.0.1:8000/equipements \
-H "Content-Type: application/json" \
-d '{"hostname":"srv-dns-01","ip":"192.168.1.20"}'
```
**Livrables :** `api_inventaire.py`, `TESTS.md` (vos commandes `curl` et les réponses obtenues), `USAGE-IA.md`.
**Critères d'évaluation :** bonnes méthodes et bons codes HTTP, JSON valide, gestion des erreurs (400/404), **aucun framework**.