ホームページ  >  記事  >  バックエンド開発  >  Flask-RESTful: Python を使用した RESTful API の構築

Flask-RESTful: Python を使用した RESTful API の構築

王林
王林オリジナル
2023-06-17 22:19:381967ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。