Praktische Übungen mit Flask

Zur Vorbereitung auf die IHK-Prüfung

Übung 1: Todo-API mit Flask

Erstellen Sie eine REST-API für eine Todo-Liste mit folgenden Endpunkten:

Vorgaben

Jedes Todo sollte folgende Felder haben:

Beispielcode

from flask import Flask, jsonify, request

app = Flask(__name__)

todos = [
    {"id": 1, "title": "Flask API lernen", "description": "REST API mit Flask erstellen", "done": False},
    {"id": 2, "title": "Einkaufen gehen", "description": "Milch, Brot und Eier kaufen", "done": True}
]

next_id = len(todos) + 1

@app.route('/api/todos', methods=['GET'])
def get_todos():
    return jsonify(todos)

@app.route('/api/todos/<int:todo_id>', methods=['GET'])
def get_todo(todo_id):
    todo = next((item for item in todos if item['id'] == todo_id), None)
    return jsonify(todo) if todo else (jsonify({'error': 'Todo nicht gefunden'}), 404)

@app.route('/api/todos', methods=['POST'])
def create_todo():
    global next_id
    if not request.json or 'title' not in request.json:
        return jsonify({'error': 'Titel ist erforderlich'}), 400
    todo = {
        'id': next_id,
        'title': request.json['title'],
        'description': request.json.get('description', ''),
        'done': request.json.get('done', False)
    }
    todos.append(todo)
    next_id += 1
    return jsonify(todo), 201

@app.route('/api/todos/<int:todo_id>', methods=['PUT'])
def update_todo(todo_id):
    todo = next((item for item in todos if item['id'] == todo_id), None)
    if not todo:
        return jsonify({'error': 'Todo nicht gefunden'}), 404
    if not request.json:
        return jsonify({'error': 'Daten müssen im JSON-Format sein'}), 400
    todo['title'] = request.json.get('title', todo['title'])
    todo['description'] = request.json.get('description', todo['description'])
    todo['done'] = request.json.get('done', todo['done'])
    return jsonify(todo)

@app.route('/api/todos/<int:todo_id>', methods=['DELETE'])
def delete_todo(todo_id):
    todo = next((item for item in todos if item['id'] == todo_id), None)
    if not todo:
        return jsonify({'error': 'Todo nicht gefunden'}), 404
    todos.remove(todo)
    return jsonify({'result': True})

if __name__ == '__main__':
    app.run(debug=True)

Erklärung

Tipp: Probiere die API mit curl oder einem Tool wie Postman aus!


Zurück zum Blog