Heim > Artikel > Backend-Entwicklung > Flask-Restless und Flask-SQLAlchemy: Best Practices zum Erstellen von RESTful-APIs in Python-Webanwendungen
Bei der Entwicklung von Python-Webanwendungen ist die Erstellung einer RESTful-API ein unvermeidliches Thema. RESTful API ist zum Standard für die moderne Webanwendungsentwicklung geworden, da es über das HTTP-Protokoll schlanke, skalierbare und einfach zu wartende API-Schnittstellen ermöglicht. Es gibt zwei erwähnenswerte Python-Bibliotheken: Flask-Restless und Flask-SQLAlchemy. Lassen Sie uns die Best Practices untersuchen, wie Sie sie zum Erstellen von RESTful-APIs verwenden können.
Flask-Restless ist eine leistungsstarke Python-Bibliothek, die die Entwicklung von RESTful-APIs vereinfachen soll. Es nutzt die vom Flask-Framework bereitgestellten Routing- und Anforderungsverarbeitungsfunktionen und integriert außerdem SQLAlchemy zur Abwicklung von Datenbankoperationen. Flask-SQLAlchemy ist eine Erweiterung für Datenbankoperationen in Flask-Anwendungen. Es bietet außerdem leistungsstarke ORM-Funktionalität, um das Schreiben von Code zu erleichtern.
Zuerst müssen wir das anzuzeigende Datenmodell definieren. Stellen Sie sich beispielsweise eine einfache Blogging-Anwendung vor, die APIs für Beiträge, Kommentare und Benutzer implementieren muss. Wir können das folgende Datenmodell definieren:
from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() class Post(db.Model): __tablename__ = 'posts' id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100)) body = db.Column(db.Text) user_id = db.Column(db.Integer, db.ForeignKey('users.id')) comments = db.relationship('Comment', backref='post', lazy='dynamic') class Comment(db.Model): __tablename__ = 'comments' id = db.Column(db.Integer, primary_key=True) body = db.Column(db.String(140)) post_id = db.Column(db.Integer, db.ForeignKey('posts.id')) user_id = db.Column(db.Integer, db.ForeignKey('users.id')) class User(db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(50), unique=True) email = db.Column(db.String(120), unique=True) posts = db.relationship('Post', backref='user', lazy='dynamic') comments = db.relationship('Comment', backref='user', lazy='dynamic')
Dann können wir Flask-Restless verwenden, um eine RESTful-API zu erstellen. Flask-Restless bietet eine schnelle und einfache Möglichkeit, APIs zu erstellen. Um eine API zu erstellen, müssen wir die folgenden Schritte ausführen:
1. Erstellen Sie eine Flask-Anwendung und konfigurieren Sie die Datenbank.
from flask import Flask from flask_restless import APIManager from app.models import db, Post, Comment, User app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///blog.db' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False app.config['JSON_SORT_KEYS'] = False db.init_app(app)
2. Erstellen Sie einen API-Manager und API-Endpunkte.
api_manager = APIManager(app, flask_sqlalchemy_db=db) api_manager.create_api(Post, methods=['GET', 'POST', 'PUT', 'DELETE']) api_manager.create_api(Comment, methods=['GET', 'POST', 'PUT', 'DELETE']) api_manager.create_api(User, methods=['GET', 'POST', 'PUT', 'DELETE'])
3. Starten Sie die Flask-Anwendung.
if __name__ == '__main__': app.run(debug=True)
Jetzt haben wir eine grundlegende RESTful-API erstellt, die es uns ermöglicht, CRUD-Operationen für Beiträge, Kommentare und Benutzer über die HTTP-Methoden GET, POST, PUT und DELETE durchzuführen. Aber das ist nur ein einfaches Beispiel. Wir müssen auch einige zusätzliche Funktionen wie Filtern, Sortieren und Paging implementieren.
Flask-Restless bietet eine Reihe von Parametern zum Filtern von Daten. Beispielsweise können wir den Parameter „q“ zum Festlegen von Suchbedingungen, den Parameter „page“ zum Paging, den Parameter „sort“ zum Sortieren usw. verwenden.
GET /api/posts?q={"filters":[{"name":"title","op":"like","val":"Flask"}]}&sort=-id&page=1
Die obige GET-Anfrage wird nach der Rückgabe in umgekehrter Reihenfolge nach ID sortiert und gibt nur die erste Seite in der Liste der Blog-Beiträge zurück, die „Flask“ im Titel enthalten (Groß- und Kleinschreibung wird nicht beachtet).
Darüber hinaus unterstützt Flask-Restless auch den Parameter „include_columns“, um die zurückzugebenden Spalten je nach Bedarf auszuwählen, und den Parameter „exclude_columns“, um unerwünschte Spalten auszuschließen. Die folgende GET-Anfrage gibt beispielsweise eine Liste zurück, die Artikel-ID, Titel und Informationen zum Autor, aber keine Informationen zum Text enthält.
GET /api/posts?include_columns=id,title,user&exclude_columns=body
Flask-SQLAlchemy bietet auch einige nützliche Abfragefilter-Tools wie equal_to, like, ilike usw. Mit diesen Tools können komplexere Abfragen erstellt werden.
users = User.query.filter(User.username.ilike('%john%'))
In diesem Beispiel stimmt die Abfrage mit allen Benutzern überein, deren Benutzername „john“ enthält.
Zusammenfassend sind Flask-Restless und Flask-SQLAlchemy zwei leistungsstarke Python-Bibliotheken zum Erstellen von RESTful-APIs. Durch ihre Kombination können wir schnell und einfach API-Anwendungen entwickeln, die leicht zu warten und zu erweitern sind. In der Praxis müssen wir basierend auf den tatsächlichen Anforderungen auswählen, welche Funktionen für unsere Anwendung am besten geeignet sind. Bei den hier genannten Funktionen handelt es sich jedoch um Best Practices für die Erstellung von RESTful-APIs.
Das obige ist der detaillierte Inhalt vonFlask-Restless und Flask-SQLAlchemy: Best Practices zum Erstellen von RESTful-APIs in Python-Webanwendungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!