3 Punkte von musoftware 2021-10-02 | 1 Kommentare | Auf WhatsApp teilen

Hallo! Ich bin derzeit ein Bachelorstudent, der seine Abschlussarbeit (und die Jobsuche...) vorbereitet.

Während ich mit Flask einen REST-API-Server entwickelt habe, dachte ich, es wäre praktisch, ein Template zu haben, das Funktionen enthält, die in mehreren Projekten gemeinsam benötigt werden, und habe deshalb ein entsprechendes Projekt erstellt.

Die derzeit vorhandenen Funktionen sind wie folgt.

JWT-Registrierung, Login und Authentifizierung (Refresh-, Access-Token-Authentifizierung)

......- Flask-Admin-Authentifizierung (automatische Ausstellung und Authentifizierung von Admin-Token-Cookies)

......- Manuelle Token-Invalidierung (Invalidierung der Tokens eines bestimmten angemeldeten Nutzers)

......- Verifizierung der E-Mail-Adresse und Zurücksetzen des Passworts per E-Mail (E-Mail-Token)

Nutzung von Funktionen über die docstring und decorator von Python

......- Definition von Routen mit Login-Pflicht und empfohlenem Login

......- Definition und Einschränkung von Request-Parametern (Verwaltung von Required/Optional Fields)

............- Validierung von Header-/Body-/Query-Eingaben

......- Dokumentation von Routenbeschreibung / Request-Parametern / möglichen Responses dieser Route

Dokumentexport

......- Export als OpenAPI-3.0-YAML-Dokument

......- Funktion zur Erstellung von ER-Diagrammen (.dot-Ausgabe)

Davon habe ich den Login-Teil (JWT-Authentifizierung) und die Funktion zur Erstellung von OpenAPI-3-Dokumenten mit PyJWT und apispec selbst implementiert.

Beim Teil zur Erstellung von OpenAPI-3-Dokumenten waren Flask-RESTful und Flask-RESTplus in einem unmaintained Zustand, und Flask-RESTX entsprach nicht der von mir gewünschten Art der Nutzung.

Außerdem ist der Login-/Authentifizierungsbereich bei Flask-Login session-basiert, und von Flask-JWT-Extended wusste ich gar nicht, dass es das gibt (...), deshalb habe ich es selbst implementiert.

Auch wenn ich als Bachelorstudent das Ganze ziemlich hastig gebaut habe und deshalb Kommentare fehlen und der Code nicht besonders sauber ist, wäre ich dankbar, wenn Sie es als PoC dafür betrachten könnten, dass man APIs auf diese Weise definieren kann!

(Tatsächlich hatte ich es vorhin schon einmal gepostet, aber bei den Funktionen ist die gesamte Einrückung verloren gegangen (...), deshalb habe ich es gelöscht und noch einmal hochgeladen. Ich bitte um Ihr Verständnis!)

1 Kommentare

 
xguru 2021-10-03

Und Sie sind noch im Bachelorstudium – wirklich beeindruckend. Ich drücke Ihnen die Daumen!!