Semaine 11

This commit is contained in:
gauvainboiche
2026-07-11 21:38:00 +02:00
parent d3d2416dea
commit 0d071d2843
281 changed files with 54412 additions and 0 deletions
+103
View File
@@ -0,0 +1,103 @@
"""
**Consignes 3_1 :**
1. Créez une application Flask avec une liste d'équipements en mémoire (`id`, `hostname`, `ip`).
2. `GET /api/equipments` → renvoie `{"equipments": [...]}` en JSON.
3. `GET /api/equipments/<int:equipment_id>` → renvoie l'équipement, ou `{"erreur": "..."}` avec le code **404** s'il n'existe pas.
4. Lancez le serveur et testez dans le navigateur ou avec `curl`.
**Consignes 3_2 :** repartez de l'API du 3.1 et ajoutez :
1. `POST /api/equipments` : crée un équipement depuis le JSON reçu. `hostname` est **obligatoire** (sinon **400**). Renvoie **201** et l'objet créé (avec un `id` auto-incrémenté).
2. `PUT /api/equipments/<id>` : met à jour les champs fournis ; **404** si l'équipement n'existe pas.
3. `DELETE /api/equipments/<id>` : supprime l'équipement ; **404** si absent.
4. Vérifiez chaque opération avec `curl`.
"""
from flask import Flask, request, jsonify
app = Flask(__name__)
equipments = [
{"id": 1, "hostname": "srv-web-01", "ip": "192.168.1.10", "active": True},
{"id": 2, "hostname": "sw-access-02", "ip": "192.168.1.2", "active": True}
]
@app.route('/api/statut', methods=['GET'])
def statut_api():
return jsonify({
"statut": "succès",
"message": "L'API d'inventaire réseau fonctionne correctement",
"version": "1.0"
}), 200
@app.route('/api/equipments', methods=['GET'])
def list_equipments():
return jsonify({"equipments": equipments}), 200
@app.route('/api/equipments/<int:equipment_id>', methods=['GET'])
def get_equipment(equipment_id):
equipment = next((e for e in equipments if e["id"] == equipment_id), None)
if equipment is None:
return jsonify({"erreur": "Équipement non trouvé"}), 404
return jsonify(equipment), 200
@app.route('/api/equipments', methods=['POST'])
def post_equipment():
data = request.get_json()
if not data or not 'hostname' in data:
return jsonify({"erreur": "Le hostname est obligatoire"}), 400
new_equipment = {
"id": max(e['id'] for e in equipments) + 1 if equipments else 1,
"hostname": data['hostname'],
"ip": data.get('ip', ""),
"actif": True
}
equipments.append(new_equipment)
return jsonify(new_equipment), 201
@app.route('/api/equipments/<int:equipment_id>', methods=['PUT'])
def put_equipment(equipment_id):
equipment = next((e for e in equipments if e["id"] == equipment_id), None)
if equipment is None:
return jsonify({"erreur": "Équipement non trouvé"}), 404
donnees = request.get_json()
if 'hostname' in donnees:
equipment['hostname'] = donnees['hostname']
if 'ip' in donnees:
equipment['ip'] = donnees['ip']
if 'actif' in donnees:
equipment['actif'] = donnees['actif']
return jsonify(equipment), 200
@app.route('/api/equipments/<int:equipment_id>', methods=['DELETE'])
def delete_equipment(equipment_id):
global equipments
equipment = next((e for e in equipments if e["id"] == equipment_id), None)
if equipment is None:
return jsonify({"erreur": "Équipement non trouvé"}), 404
equipments = [e for e in equipments if e["id"] != equipment_id]
return jsonify({"message": "Équipement supprimé avec succès"}), 200
if __name__ == '__main__':
app.run(host='127.0.0.1', port=5000, debug=True)