Flask-RESTful: Python を使用して RESTful API を構築する
最新のインターネット サービスの台頭により、RESTful API が通信プロトコルの標準になりました。高品質の RESTful API を開発するために、Python には効率的なフレームワークである Flask-RESTful があります。この記事では、Flask-RESTful とは何か、Python を使用して RESTful API を構築する方法を紹介します。
パート 1: RESTful API を理解する
REST (Representational State Transfer) は、HTTP プロトコルに基づく Web サービス アーキテクチャ スタイルであり、クライアントがアクセスを要求してリソースを取得できるようにし、サーバーが応答を返せるようにします。要求されたリソース。 API (アプリケーション プログラミング インターフェイス) は、プログラムとシステム間の通信プロトコルであり、これにより、さまざまなアプリケーションが定義されたインターフェイスを通じて相互に通信し、特定のタスクを完了できるようになります。 RESTful API は、リソース (URI) と動作 (HTTP メソッド) の 2 つの部分で構成されます。
リソースは RESTful API の中核であり、内部データを表現します。 URI (Uniform Resource Identifier) は各リソースの場所を指定し、各リソースは一意の URI を持ちます。一方、動作は、リソースへのアクセス方法と操作方法を指定します。 RESTful API は、HTTP メソッドを使用してこれらの操作を定義します。たとえば、GET メソッドはリソースの取得に使用され、POST メソッドはリソースの作成に使用され、PUT メソッドはリソースの更新に使用され、DELETE メソッドはリソースの削除に使用されます。
パート 2: Flask-RESTful の概要
Flask-RESTful は、Flask および Python RESTful フレームワークの拡張モジュールです。 RESTful API を構築するための簡素化されたメソッドとツールを提供します。 Flask-RESTful の利点は次のとおりです:
1. 使いやすい
Flask-RESTful は、Flask フレームワークに基づく軽量のフレームワークです。これは、開発者が反復的なコードを大量に記述せずに RESTful API を迅速に構築できるようにするためのシンプルなツール セットを提供します。
2. 迅速な開発
リクエスト パラメーターの解析やルート作成などのいくつかの簡素化されたメソッドにより、API 開発時間を大幅に短縮できます。
3. 拡張とカスタマイズのサポートを提供します
Flask-RESTful は柔軟な拡張とカスタマイズ ポイントを提供し、開発者は必要に応じてその機能を拡張できます。
4. ドキュメントは非常に詳細です
Flask-RESTful のドキュメントは非常に詳細で、学習と使用が簡単です。
パート 3: Flask-RESTful の使用方法
次に、Flask-RESTful を使用して RESTful API を構築する方法を紹介します。動画データを管理するための簡単なAPIを作成します。この API により、クライアントは次の操作を実行できるようになります:
1. すべての映画を一覧表示する
2. 映画に関する詳細情報を取得する
3. 新しい映画を追加する
4. 映画情報を更新する
5. ムービーレコードの削除
まず、Flask-RESTful をインストールして設定し、Python 仮想環境を作成します。次のコマンドを使用して Flask-RESTful をインストールします (pip がインストールされていることを確認してください):
pip install flask-restful
次に、app.py ファイルを作成します。このファイルは、必要なモジュールとライブラリをインポートする必要があります。このファイルは Flask アプリケーションを定義および実装します。
from flask import Flask, request from flask_restful import Resource, Api, reqparse app = Flask(__name__) api = Api(app)
ここでは、Flask および Flask-RESTful ライブラリとモジュールを紹介します。次に、ダミーデータを定義しましょう。
movies = [ { 'id': 1, 'title': 'The Shawshank Redemption', 'director': 'Frank Darabont', 'year_released': 1994}, { 'id': 2, 'title': 'Forrest Gump', 'director': 'Robert Zemeckis', 'year_released': 1994}, { 'id': 3, 'title': 'The Matrix', 'director': 'The Wachowski Brothers', 'year_released': 1999}, { 'id': 4, 'title': 'Léon: The Professional', 'director': 'Luc Besson', 'year_released': 1994}, { 'id': 5, 'title': 'The Dark Knight', 'director': 'Christopher Nolan', 'year_released': 2008}, { 'id': 6, 'title': 'Interstellar', 'director': 'Christopher Nolan', 'year_released': 2014}, { 'id': 7, 'title': 'Inception', 'director': 'Christopher Nolan', 'year_released': 2010}, { 'id': 8, 'title': 'The Lord of the Rings: The Fellowship of the Ring', 'director': 'Peter Jackson', 'year_released': 2001}, { 'id': 9, 'title': 'Gladiator', 'director': 'Ridley Scott', 'year_released': 2000}, { 'id': 10, 'title': 'The Godfather', 'director': 'Francis Ford Coppola', 'year_released': 1972} ]
次に、5 つの異なる HTTP リクエスト (GET、POST、PUT、DELETE) を処理するための 5 つの異なるリソースを作成します。
class MovieList(Resource): def get(self): return { 'movies': movies } def post(self): parser = reqparse.RequestParser() parser.add_argument('title', type=str, required=True, help='Title is required.') parser.add_argument('director', type=str, required=True, help='Director is required.') parser.add_argument('year_released', type=int, required=True, help='Year must be a number.') args = parser.parse_args() movie = { 'id': len(movies) + 1, 'title': args['title'], 'director': args['director'], 'year_released': args['year_released'] } movies.append(movie) return movie, 201 class Movie(Resource): def get(self, movie_id): movie = next(filter(lambda x:x['id']==movie_id, movies), None) return {'movie': movie}, 200 if movie else 404 def put(self, movie_id): parser = reqparse.RequestParser() parser.add_argument('title', type=str, required=True, help='Title is required.') parser.add_argument('director', type=str, required=True, help='Director is required.') parser.add_argument('year_released', type=int, required=True, help='Year must be a number.') args = parser.parse_args() movie = next(filter(lambda x:x['id']==movie_id, movies), None) if movie is None: movie = {'id': movie_id, 'title': args['title'], 'director': args['director'], 'year_released': args['year_released']} movies.append(movie) else: movie.update(args) return movie def delete(self, movie_id): global movies movies = list(filter(lambda x:x['id']!=movie_id, movies)) return {'message': 'Movie deleted.'}, 200
これらのリソースは、URL に関連付けられたパスにマップされます。
api.add_resource(MovieList, '/movies') api.add_resource(Movie, '/movies/<int:movie_id>')
次に、Flask アプリケーションを起動してローカルホスト ( http://127.0.0.1:5000/movies ) を確認すると、作成したばかりの API リストが表示されます。 POSTメソッドを使用して新しいムービーを追加できます。
{ "movies": [ { "director": "Frank Darabont", "id": 1, "title": "The Shawshank Redemption", "year_released": 1994 }, ... ] }
完全なリクエストとレスポンスは次のとおりです:
import requests url = 'http://localhost:5000/movies' data = {"title": "The Green Mile", "director": "Frank Darabont", "year_released": "1999"} res = requests.post(url, data=data)
PUT メソッドを使用して映画情報を更新することもできます。
<Response [201]> {'id': 11, 'title': 'The Green Mile', 'director': 'Frank Darabont', 'year_released': 1999}
最後に、ムービーを削除しましょう。
url = 'http://localhost:5000/movies/11' data = {"title": "The Green Mile", "director": "Frank Darabont", "year_released": "1999"} res = requests.put(url, data=data)
開発と保守を容易にするために、Flask-RESTful フレームワークを使用してシンプルな RESTful API を作成しました。 RESTful API は Web アプリケーション開発に不可欠なコンポーネントであり、クライアントがリソースにアクセスして更新できるようにし、URI と HTTP メソッドを重視します。 Flask-RESTful を同時に使用すると、チームの開発をスピードアップし、コードを簡素化できます。
以上がFlask-RESTful: Python を使用した RESTful API の構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。