Heim > Backend-Entwicklung > Python-Tutorial > Flask-Restless und Flask-SQLAlchemy: Best Practices zum Erstellen von RESTful-APIs in Python-Webanwendungen

Flask-Restless und Flask-SQLAlchemy: Best Practices zum Erstellen von RESTful-APIs in Python-Webanwendungen

WBOY
Freigeben: 2023-06-17 19:55:35
Original
892 Leute haben es durchsucht

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')
Nach dem Login kopieren

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)
Nach dem Login kopieren

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'])
Nach dem Login kopieren

3. Starten Sie die Flask-Anwendung.

if __name__ == '__main__':
    app.run(debug=True)
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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%'))
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage