""" **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/` → 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/` : met à jour les champs fournis ; **404** si l'équipement n'existe pas. 3. `DELETE /api/equipments/` : 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/', 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/', 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/', 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)