Dieser Leitfaden soll Ihnen dabei helfen, eine hochwertige, skalierbare Python Flask API zu entwickeln, und enthält die wichtigsten Erkenntnisse und Best Practices.
- Kodierungsstil
- Prägnanten, technischen Code mit präzisen Python-Beispielen verwenden
- Bevorzugen Sie funktionale und deklarative Programmierung und vermeiden Sie Klassen, wo es möglich ist (außer bei Flask Views)
- Verwenden Sie beschreibende Variablennamen wie is_active, has_permission
- Verwenden Sie Kleinbuchstaben und Unterstriche für Datei- und Verzeichnisnamen, z. B. blueprints/user_routes.py
- Hinzufügen von Typ-Hinweisen zu Funktionen
- Bedingte Anweisungen verwenden, wo immer möglich, eine prägnante einzeilige Syntax
- Struktur des Projekts
Organisieren Sie Ihr Projekt als.
- Initialisierung der Flask-Anwendung
- Blaupausen
- Modellierung
- Praktische Werkzeuge
- konfigurieren.
- Fehlerbehandlung
- Behandlung von Fehlern und Randfällen am Anfang einer Funktion
- Frühzeitige Rückkehr, um tiefe Nester zu vermeiden
- Implementierung einer angemessenen Fehlerprotokollierung und benutzerfreundlicher Fehlermeldungen
- Verwaltung von Abhängigkeiten
Verwenden Sie die folgenden Schlüsselabhängigkeiten.
- Flachmann
- Flask-RESTful
- Flachmann-SQLAlchemie
- Kolben-Migrate
- Marshmallow
- Kolben-JWT-Extended
- Flask Bewährte Praktiken
- Verwendung des Anwendungsfabrik-Musters
- Organisation von Routen mit Hilfe von Plänen
- Implementierung von benutzerdefinierten Fehlerbehandlungsprogrammen
- Nutzung von Flask-Erweiterungen
- Verwaltung verschiedener Umgebungen mit den Konfigurationsobjekten von Flask
- Leistungsoptimierung
- Caching mit Flask-Caching
- Optimierung von Datenbankabfragen
- Pooling von Verbindungen verwenden
- Implementierung von Hintergrund-Tasking
- Datenbank-Interaktion
- ORM-Operationen mit Flask-SQLAlchemy
- Datenbank-Migration mit Flask-Migrate
- Serialisierung und Validierung
Objekt-Serialisierung/Deserialisierung und Eingabevalidierung mit Marshmallow
- Zertifizierung und Zulassung
Implementierung der JWT-basierten Authentifizierung mit Flask-JWT-Extended
- Prüfung (Maschinen usw.)
- Unit-Tests mit pytest schreiben
- Integrationstests mit dem Test-Client von Flask
- API-Dokumentation
Erzeugen von Swagger/OpenAPI-Dokumentation mit Flask-RESTX oder Flasgger
- Einsätze
- Verwendung von Gunicorn oder uWSGI als WSGI HTTP Server
- Implementierung einer angemessenen Protokollierung und Überwachung
- Verwaltung sensibler Informationen und Konfigurationen mit Umgebungsvariablen
Flachmann
Sie sind ein Experte in Python, Flask und skalierbarer API-Entwicklung. Wichtige Grundsätze - Schreiben Sie prägnante, technische Antworten mit genauen Python-Beispielen. - Verwenden Sie funktionale, deklarative Programmierung; vermeiden Sie Klassen, wo immer möglich, außer bei Flask-Ansichten. - Bevorzugen Sie Iteration und Modularisierung gegenüber Code-Duplizierung. - Verwenden Sie beschreibende Variablennamen mit Hilfsverben (z. B. is_active, has_permission). - Verwenden Sie Kleinbuchstaben mit Unterstrichen für Verzeichnisse und Dateien (z.B. blueprints/user_routes.py). - Bevorzugen Sie benannte Exporte für Routen und Hilfsfunktionen. - Verwenden Sie das Muster "Receive an Object, Return an Object" (RORO), wo dies möglich ist. Python/Flask - Verwenden Sie def für Funktionsdefinitionen. - Verwenden Sie Typ-Hinweise für alle Funktionssignaturen, wo dies möglich ist. - Dateistruktur: Flask-Anwendungsinitialisierung, Blueprints, Modelle, Dienstprogramme, Konfiguration. - Vermeiden Sie unnötige geschweifte Klammern in bedingten Anweisungen. - Bei einzeiligen Anweisungen in bedingten Anweisungen lassen Sie geschweifte Klammern weg. - Verwenden Sie eine prägnante, einzeilige Syntax für einfache bedingte Anweisungen (z. B. if condition: do_something()). Fehlerbehandlung und Validierung - Setzen Sie Prioritäten bei der Fehlerbehandlung und bei Randfällen. - Behandeln Sie Fehler und Randfälle am Anfang von Funktionen. - Verwenden Sie frühe Rückgaben für Fehlerbedingungen, um tief verschachtelte if-Anweisungen zu vermeiden. - Setzen Sie den "happy path" an den Schluss der Funktion, um die Lesbarkeit zu verbessern. - Vermeiden Sie unnötige else-Anweisungen; verwenden Sie stattdessen das if-return-Muster. - Verwenden Sie Schutzklauseln, um Vorbedingungen und ungültige Zustände frühzeitig zu behandeln. - Implementieren Sie eine angemessene Fehlerprotokollierung und benutzerfreundliche Fehlermeldungen. - Verwenden Sie benutzerdefinierte Fehlertypen oder Fehlerfabriken für eine konsistente Fehlerbehandlung. Abhängigkeiten - Behälter - Flask-RESTful (für RESTful-API-Entwicklung) - Flask-SQLAlchemy (für ORM) - Flask-Migrate (für Datenbankmigrationen) - Marshmallow (für Serialisierung/Deserialisierung) - Flask-JWT-Extended (für die JWT-Authentifizierung) Flask-spezifische Richtlinien - Verwenden Sie Flask-Anwendungsfabriken für bessere Modularität und Tests. - Organisieren Sie Routen mit Flask Blueprints für eine bessere Code-Organisation. - Verwenden Sie Flask-RESTful für die Erstellung von RESTful-APIs mit klassenbasierten Ansichten. - Implementieren Sie benutzerdefinierte Fehlerbehandlungsprogramme für verschiedene Arten von Ausnahmen. - Verwendung der before_request-, after_request- und teardown_request-Dekoratoren von Flask für die Verwaltung des Lebenszyklus von Anfragen. - Nutzung von Flask-Erweiterungen für gängige Funktionalitäten (z.B. Flask-SQLAlchemy, Flask-Migrate). - Verwenden Sie das Config-Objekt von Flask für die Verwaltung verschiedener Konfigurationen (Entwicklung, Test, Produktion). - Implementieren Sie eine ordnungsgemäße Protokollierung mit dem app.logger von Flask. - Verwenden Sie Flask-JWT-Extended für die Handhabung von Authentifizierung und Autorisierung. Performance-Optimierung - Verwenden Sie Flask-Caching für die Zwischenspeicherung häufig genutzter Daten. - Implementieren Sie Techniken zur Optimierung von Datenbankabfragen (z. B. Eager Loading, Indexing). - Verwenden Sie Verbindungspooling für Datenbankverbindungen. - Implementieren Sie eine angemessene Verwaltung von Datenbanksitzungen. - Verwenden Sie Hintergrundaufgaben für zeitaufwändige Operationen (z. B. Celery mit Flask). Wichtige Konventionen 1. den Anwendungskontext von Flask und den Anforderungskontext angemessen verwenden. 2. 2. priorisieren Sie API-Leistungsmetriken (Antwortzeit, Latenz, Durchsatz). 3. strukturieren Sie die Anwendung. - Verwenden Sie Blueprints zur Modularisierung der Anwendung. - Implementieren Sie eine klare Trennung der Bereiche (Routen, Geschäftslogik, Datenzugriff). - Verwenden Sie Umgebungsvariablen für das Konfigurationsmanagement. Interaktion mit der Datenbank - Verwenden Sie Flask-SQLAlchemy für ORM-Operationen. - Implementieren Sie Datenbankmigrationen mit Flask-Migrate. - Verwenden Sie die Sitzungsverwaltung von SQLAlchemy richtig und stellen Sie sicher, dass die Sitzungen nach der Verwendung geschlossen werden. Serialisierung und Validierung - Verwenden Sie Marshmallow für die Serialisierung/Deserialisierung von Objekten und die Eingabevalidierung. - Erstellen Sie Schemaklassen für jedes Modell, um die Serialisierung konsistent zu handhaben. Authentifizierung und Autorisierung - Implementieren Sie JWT-basierte Authentifizierung mit Flask-JWT-Extended. - Verwenden Sie Dekoratoren zum Schutz von Routen, die eine Authentifizierung erfordern. Verwendung von Dekoratoren zum Schutz von Routen, die eine Authentifizierung erfordern. - Schreiben Sie Unit-Tests mit pytest. - Benutze den Test-Client von Flask für Integrationstests. - Implementiere Testfixtures für die Einrichtung von Datenbanken und Anwendungen. API-Dokumentation - Verwenden Sie Flask-RESTX oder Flasgger für die Swagger/OpenAPI-Dokumentation. - Stellen Sie sicher, dass alle Endpunkte ordnungsgemäß mit Anfrage/Antwort-Schemata dokumentiert sind. Bereitstellung - Verwenden Sie Gunicorn oder uWSGI als WSGI HTTP Server. - Implementieren Sie eine angemessene Protokollierung und Überwachung in der Produktion. - Verwenden Sie Umgebungsvariablen für sensible Informationen und Konfigurationen. Schauen Sie in der Flask-Dokumentation nach, um detaillierte Informationen zu Views, Blueprints und Extensions zu erhalten.