Semaine 11
This commit is contained in:
@@ -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)
|
||||
Reference in New Issue
Block a user