{}const=>[]async()letfn</>var
EntwicklungPython

Erstellen einer einfachen API mit Flask: Schritt-für-Schritt-Anleitung für Entwickler

Erfahren Sie, wie Sie mit Flask eine vollständige RESTful-API in Python erstellen. Detaillierte Anleitung mit Codebeispielen: CRUD-Operationen, Datenbankzugriff, Validierung, Fehlerbehandlung und Bereitstellung.

К

Kodik

Autor

4 Min. Lesezeit

Flask ist ein Microframework für Python, das sich ideal für die Erstellung von Webanwendungen und APIs eignet. Seine Einfachheit und Flexibilität machen es zu einer ausgezeichneten Wahl für Anfänger und erfahrene Entwickler. In diesem Artikel werden wir uns ansehen, wie man mit Flask eine einfache, aber voll funktionsfähige API erstellt.

Was ist eine API und warum braucht man sie?

Eine API (Application Programming Interface) ist eine Reihe von Regeln und Tools, die es verschiedenen Programmen ermöglichen, miteinander zu interagieren. Die RESTful-API verwendet HTTP-Anfragen, um CRUD-Operationen (Create, Read, Update, Delete) an Daten durchzuführen. Moderne Webanwendungen werden oft in Frontend und Backend unterteilt, wobei die API als Brücke zwischen ihnen dient.

🔥 100.000+ Schüler sind bereits bei uns

Genug Theorie gelesen?
Zeit zu coden!

Kodik — eine App, in der du durch Praxis programmieren lernst. KI-Mentor, interaktive Lektionen, echte Projekte.

🤖 KI 24/7
🎓 Zertifikate
💰 Kostenlos
🚀 Jetzt starten
Heute beigetreten

Vorbereitung der Umgebung

Bevor wir beginnen, müssen wir Flask installieren. Es wird empfohlen, eine virtuelle Umgebung zu verwenden, um Projektabhängigkeiten zu isolieren:

python -m venv venv
source venv/bin/activate  # für Linux/Mac
venv\Scripts\activate  # für Windows
pip install flask

Erstellen einer grundlegenden API

Beginnen wir mit der Erstellung der einfachsten Flask-Anwendung. Erstellen Sie die Datei app.py:

from flask import Flask, jsonify, request

app = Flask(__name__)

# Temporärer Datenspeicher
books = [
    {'id': 1, 'title': 'Clean code', 'author': 'Robert Martin'},
    {'id': 2, 'title': 'Python. To the heights of mastery', 'author': 'Luciano Ramallo'}
]

@app.route('/')
def home():
    return jsonify({'message': 'Welcome to the API library!'})

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

Starten Sie die Anwendung mit dem Befehl python app.py, und der Server wird unter http://127.0.0.1:5000/ verfügbar.

Implementierung von CRUD-Operationen

Fügen wir nun Endpunkte für die Arbeit mit Büchern hinzu.

Alle Bücher erhalten (GET)

@app.route('/api/books', methods=['GET'])
def get_books():
    return jsonify({'books': books, 'count': len(books)})

Buch per ID erhalten (GET)

@app.route('/api/books/<int:book_id>', methods=['GET'])
def get_book(book_id):
    book = next((book for book in books if book['id'] == book_id), None)
    if book:
        return jsonify(book)
    return jsonify({'error': 'Book not found'}), 404

Erstellen eines neuen Buches (POST)

@app.route('/api/books', methods=['POST'])
def create_book():
    if not request.json or 'title' not in request.json:
        return jsonify({'error': 'You must specify the name of the book'}), 400
    
    new_book = {
        'id': books[-1]['id'] + 1 if books else 1,
        'title': request.json['title'],
        'author': request.json.get('author', 'Unknown author')
    }
    books.append(new_book)
    return jsonify(new_book), 201

Buch aktualisieren (PUT)

@app.route('/api/books/<int:book_id>', methods=['PUT'])
def update_book(book_id):
    book = next((book for book in books if book['id'] == book_id), None)
    if not book:
        return jsonify({'error': 'Book not found'}), 404
    
    book['title'] = request.json.get('title', book['title'])
    book['author'] = request.json.get('author', book['author'])
    return jsonify(book)

Buch löschen (DELETE)

@app.route('/api/books/<int:book_id>', methods=['DELETE'])
def delete_book(book_id):
    global books
    books = [book for book in books if book['id'] != book_id]
    return jsonify({'message': 'Book deleted successfully'})

Fehlerbehandlung

Fügen Sie Fehlerhandler für aussagekräftigere Antworten hinzu:

@app.errorhandler(404)
def not_found(error):
    return jsonify({'error': 'Resource not found'}), 404

@app.errorhandler(500)
def internal_error(error):
    return jsonify({'error': 'Internal server error'}), 500

API-Test

Zum Testen können Sie curl, Postman oder die Python-Bibliothek requests verwenden:

# Alle Bücher erhalten
curl http://127.0.0.1:5000/api/books

# Neues Buch erstellen
curl -X POST http://127.0.0.1:5000/api/books \
  -H "Content-Type: application/json" \
  -d '{"title":"Perfect Code","author":"Steve McConnell"}' Buch aktualisieren
curl -X PUT http://127.0.0.1:5000/api/books/1 \
  -H "Content-Type: application/json" \
  -d '{"title":"Clean Code (new edition)"}'# Buch löschen
curl -X DELETE http://127.0.0.1:5000/api/books/2

Hinzufügen einer Validierung

Für eine zuverlässigere Datenvalidierung können Sie die Bibliothek flask-marshmallow verwenden:

from flask_marshmallow import Marshmallow

ma = Marshmallow(app)

class BookSchema(ma.Schema):
    class Meta:
        fields = ('id', 'title', 'author')

book_schema = BookSchema()
books_schema = BookSchema(many=True)

Datenbankverbindung

Für echte Anwendungen lohnt es sich, eine Datenbank zu verwenden. Installieren wir Flask-SQLAlchemy:

pip install flask-sqlalchemy

Beispiel für ein Buchmodell mit SQLAlchemy:

from flask_sqlalchemy import SQLAlchemy

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///books.db'
db = SQLAlchemy(app)

class Book(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(200), nullable=False)
    author = db.Column(db.String(100))
    
    def to_dict(self):
        return {
            'id': self.id,
            'title': self.title,
            'author': self.author
        }

CORS hinzufügen

Wenn Ihre API von einer Frontend-Anwendung verwendet wird, müssen Sie CORS konfigurieren:

pip install flask-cors
from flask_cors import CORS

CORS(app)

Sicherheit und Best Practices

Bei der Entwicklung einer API ist es wichtig, die Sicherheit im Auge zu behalten. Verwenden Sie Umgebungsvariablen zum Speichern vertraulicher Daten, implementieren Sie die Authentifizierung über JWT-Token, begrenzen Sie die Anzahl der Anfragen (Ratenbegrenzung), validieren Sie alle eingehenden Daten und verwenden Sie HTTPS in der Produktion.

Es wird auch empfohlen, die Projektstruktur zu organisieren, indem der Code in Module unterteilt wird: Erstellen Sie separate Dateien für Modelle, Routen und Konfigurationen. Verwenden Sie Blueprint, um verwandte Endpunkte zu gruppieren, wodurch der Code wartbarer und skalierbarer wird.

API-Bereitstellung

Verwenden Sie zum Bereitstellen einer Flask-Anwendung in der Produktion einen WSGI-Server wie Gunicorn:

pip install gunicorn
gunicorn -w 4 app:app

Beliebte Plattformen für den Einsatz: Heroku, DigitalOcean, AWS oder traditionelles VPS mit nginx als Reverse-Proxy.

Befund

Wir haben eine vollständige RESTful-API mit Flask erstellt, die alle wichtigen CRUD-Operationen, Fehlerbehandlung und Datenvalidierung umfasst. Flask bietet eine minimale, aber leistungsstarke Grundlage für die Erstellung von APIs beliebiger Komplexität. Die nächsten Schritte könnten das Hinzufügen einer Authentifizierung, das Dokumentieren der API mit Swagger, das Schreiben von Unit-Tests und die Leistungsoptimierung sein.

Möchten Sie Python und Webentwicklung besser verstehen?

Anlage Kodik bietet strukturierte Kurse in Python, JavaScript, API und vielen anderen Technologien. Die Schulung basiert auf praktischen Beispielen mit Schritt-für-Schritt-Erklärungen.

Schließen Sie sich unserem Telegram-Kanal, wo Sie nützliche Materialien, Programmierhinweise und Unterstützung von einer aktiven Entwickler-Community finden, die bereit ist, Ihnen in jeder Phase Ihres Lernprozesses zu helfen!

🎯Hör auf zu zögern

Artikel gefallen?
Zeit zum Üben!

Bei Kodik liest du nicht nur — du schreibst sofort Code. Theorie + Praxis = echte Skills.

Sofortige Praxis
🧠KI erklärt Code
🏆Zertifikat

Keine Registrierung • Keine Karte