Python: Implementierung der REST-API mit Flask

Diese Dokumentation ist Teil des Erstellen einer REST-API-Leitfadens. Den vollständigen Leitfaden finden Sie hier: Wie man eine REST-API mit Flask erstellt.

👋 Willkommen bei der Stackhero-Dokumentation!

Stackhero bietet eine einsatzbereite Python-Cloud-Lösung, die zahlreiche Vorteile bietet, darunter:

  • Deployen Sie Ihre Anwendung in Sekundenschnelle mit einem einfachen git push.
  • Verwenden Sie Ihren eigenen Domainnamen und profitieren Sie von der automatischen Konfiguration von HTTPS-Zertifikaten für erhöhte Sicherheit.
  • Genießen Sie beruhigende automatische Backups, Ein-Klick-Updates und eine einfache, transparente und vorhersehbare Preisgestaltung.
  • Erhalten Sie optimale Leistung und robuste Sicherheit dank einer privaten und dedizierten VM.

Sparen Sie Zeit und vereinfachen Sie Ihr Leben: Es dauert nur 5 Minuten, um die Python-Cloud-Hosting-Lösung von Stackhero auszuprobieren!

Lassen Sie uns nun in den Code eintauchen!

Erstellen Sie eine Datei namens app.py und fügen Sie den folgenden Code ein:

import os
from dotenv import load_dotenv
from flask import Flask, jsonify, request

# Laden von Umgebungsvariablen aus der .env-Datei, wenn nicht in Produktion
if os.environ.get('ENV') != 'production':
    load_dotenv()

# Erstellen der Flask-App
app = Flask(__name__)

# Beispiel-Datensatz
tasks = [
    {
        'id': 1,
        'title': 'Einkaufen',
        'description': 'Milch, Käse, Pizza, Früchte',
        'done': False
    },
    {
        'id': 2,
        'title': 'Python lernen',
        'description': 'Grundlagen der Python-Programmierung lernen',
        'done': False
    }
]

# Route '/api/tasks' (GET) zum Auflisten aller Aufgaben
@app.route('/api/tasks', methods=['GET'])
def get_tasks():
    return jsonify({'tasks': tasks})

# Route '/api/tasks/<task_id>' (GET) zum Abrufen einer bestimmten Aufgabe nach ihrer ID
@app.route('/api/tasks/<int:task_id>', methods=['GET'])
def get_task(task_id):
    task = [task for task in tasks if task['id'] == task_id]
    if len(task) == 0:
        return jsonify({'error': 'Aufgabe nicht gefunden'}), 404
    return jsonify({'task': task[0]})

# Route '/api/tasks' (POST) zum Erstellen einer neuen Aufgabe
@app.route('/api/tasks', methods=['POST'])
def create_task():
    if not request.json or 'title' not in request.json:
        return jsonify({'error': 'Titel ist erforderlich'}), 400
    task = {
        'id': tasks[-1]['id'] + 1,
        'title': request.json['title'],
        'description': request.json.get('description', ""),
        'done': False
    }
    tasks.append(task)
    return jsonify({'task': task}), 201

# Starten des API-Servers
if __name__ == '__main__':
    if os.environ.get('ENV') == 'production':
        app.run()
    else:
        app.run(host='0.0.0.0', port=8080, debug=True)

Um den Server zu starten, führen Sie aus:

python app.py

Mit der Option host='0.0.0.0' können Sie auch auf Ihre API zugreifen, indem Sie Ihren Browser verwenden, wenn Sie Code-Hero verwenden. Navigieren Sie einfach zu http://<XXXXXX>.stackhero-network.com:8080/api/tasks, wobei Sie <XXXXXX> durch Ihre Code-Hero-Domain ersetzen.