ホームページ >バックエンド開発 >Python チュートリアル >Flask-Restless と Flask-SQLAlchemy: Python Web アプリケーションで RESTful API を構築するためのベスト プラクティス
Python Web アプリケーション開発では、RESTful API の構築は避けられないトピックです。 RESTful API は、HTTP プロトコルを通じて軽量でスケーラブルで保守が容易な API インターフェイスを可能にするため、最新の Web アプリケーション開発の標準になっています。 Flask-Restless と Flask-SQLAlchemy という 2 つの Python ライブラリについて言及する価値があります。それらを使用して RESTful API を構築する方法に関するベスト プラクティスを見てみましょう。
Flask-Restless は、RESTful API の開発を簡素化するように設計された強力な Python ライブラリです。 Flask フレームワークによって提供されるルーティングおよびリクエスト処理機能を使用し、データベース操作を処理するために SQLAlchemy も統合します。 Flask-SQLAlchemy は、Flask アプリケーションでのデータベース操作の拡張機能です。また、コードの作成を容易にする強力な ORM 機能も提供します。
まず、表示するデータ モデルを定義する必要があります。たとえば、投稿、コメント、ユーザー用の API を実装する必要がある単純なブログ アプリケーションについて考えてみましょう。次のデータ モデルを定義できます:
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')
次に、Flask-Restless を使用して RESTful API を作成できます。 Flask-Restless は、API を迅速かつ簡単に作成する方法を提供します。 API を作成するには、次の手順を実行する必要があります:
1. フラスコ アプリケーションを作成し、データベースを構成します。
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. API マネージャーと API エンドポイントを作成します。
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. Flask アプリケーションを起動します。
if __name__ == '__main__': app.run(debug=True)
これで、GET、POST、PUT、および DELETE HTTP メソッドを介して投稿、コメント、ユーザーに対して CRUD 操作を実行できる基本的な RESTful API が作成されました。しかし、これは単なる基本的な例にすぎません。また、フィルタリング、並べ替え、ページングなどの追加機能を実装する必要もあります。
Flask-Restless は、データをフィルター処理するためのパラメーターのセットを提供します。たとえば、「q」パラメータを使用して検索条件を指定したり、「page」パラメータを使用してページングを指定したり、「sort」パラメータを使用してソートを指定したりできます。
GET /api/posts?q={"filters":[{"name":"title","op":"like","val":"Flask"}]}&sort=-id&page=1
上記の GET リクエストは、返された後に ID によって逆順にソートされ、タイトルに「Flask」を含むブログ投稿リストの最初のページ (大文字と小文字は区別されません) のみが返されます。
さらに、Flask-Restless は、必要に応じて返される列を選択する「include_columns」パラメータと、不要な列を除外する「exclude_columns」パラメータもサポートしています。たとえば、次の GET リクエストは、記事 ID、タイトル、著者情報を含むリストを返しますが、本文情報は返しません。
GET /api/posts?include_columns=id,title,user&exclude_columns=body
Flask-SQLAlchemy は、equal_to、like、ilike などの便利なクエリ フィルター ツールも提供します。これらのツールを使用すると、より複雑なクエリを作成できます。
users = User.query.filter(User.username.ilike('%john%'))
この例では、クエリはユーザー名に「john」が含まれるすべてのユーザーと一致します。
要約すると、Flask-Restless と Flask-SQLAlchemy は、RESTful API を作成するための 2 つの強力な Python ライブラリです。これらを組み合わせて使用することで、保守や拡張が容易な API アプリケーションを迅速かつ簡単に開発できます。実際には、実際のニーズに基づいてアプリケーションに最適な機能を選択する必要があります。ただし、ここで説明する機能は、RESTful API を構築するためのベスト プラクティスです。
以上がFlask-Restless と Flask-SQLAlchemy: Python Web アプリケーションで RESTful API を構築するためのベスト プラクティスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。