ホームページ  >  記事  >  バックエンド開発  >  Python Flask RESTful の使用方法

Python Flask RESTful の使用方法

王林
王林転載
2023-04-29 19:49:121499ブラウズ

1. RESTful の概要

REST (Representational State Transfer) スタイルは、リソース指向の Web アプリケーション設計スタイルであり、Web アプリケーションを非常に読みやすく、使いやすくするためのいくつかの設計原則に従っています。 RESTful スタイルの各側面を詳しく説明しましょう:

  • リソース識別子: RESTful スタイルでは、各リソースには一意の識別子があり、通常は URL (統一)リソース ロケーター) 。 URL は、クライアントが HTTP プロトコルを使用してリソースにアクセスできるように、リソースの場所を識別するために使用されます。たとえば、単純な URL は次のようになります: http://example.com/products/123"products" はリソース タイプを表し、"123" リソース識別子を表します。

  • プレゼンテーション層: リソースは、JSONXML などのさまざまな形式で表現できます。 HTML お待ちください。クライアントは、必要に応じて対話する適切な表現を選択できます。たとえば、RESTful API はデータを JSON 形式で返すことができるため、クライアントはデータをより簡単に解析して処理できます。

  • 自己記述型メッセージ: 各メッセージには、メッセージの処理方法を説明するのに十分な情報が含まれている必要があります。たとえば、HTTP 応答には、クライアントが応答の意味を理解できるように、ステータス コード、応答ヘッダー、応答本文などの情報が含まれている必要があります。

  • ステートレス通信: RESTful スタイル設計はステートレス通信を重視しています。つまり、各リクエストには、依存せずにリクエストを処理するために必要な情報がすべて含まれている必要があります。以前のリクエストで。これにより、サーバーが状態情報を保持する必要がなくなるため、Web アプリケーションがよりシンプルかつスケーラブルになります。

  • 統一インターフェイス: すべてのリソースには同じインターフェイスを介してアクセスする必要があります。これは、クライアントが同じ HTTP メソッド (GETPOSTPUTDELETE など) を使用して、異なるタイプの H を操作します。これにより、API がよりシンプルかつ一貫性のあるものになり、他の開発者が理解しやすくなり、使いやすくなります。

つまり、RESTful スタイルの設計は、Web アプリケーションをより柔軟でスケーラブルにし、保守を容易にするものであり、Web アプリケーションを設計する最新の方法です。

2. Python での RESTful

Python は RESTful スタイルの Web アプリケーションを実装するために使用でき、通常は開発プロセスを簡素化するためにいくつかの Web フレームワークを使用します。一般的な Python Web フレームワークの一部を次に示します。

  • Flask: Flask は、RESTful Web の構築に使用できるシンプルで軽量な Web フレームワークです。アプリケーション。 Python のデコレータ構文を使用して HTTP ルートを定義し、Web アプリケーションの作成をシンプルかつ直感的にします。 Flask は、開発者がデータベース アクセス、フォーム検証などの新しい機能を簡単に追加できるように、拡張メカニズムも提供します。

  • Django: Django は、複雑な Web アプリケーションの構築に使用できる強力で包括的な Web フレームワークです。 ORM (オブジェクト リレーショナル マッピング)、フォーム検証、認証など、開発者が Web アプリケーションをより迅速に構築できるようにする多くの組み込み機能が提供されます。 Django は、RESTful スタイルの Web アプリケーション開発もサポートしています。これは、サードパーティ ライブラリ Django REST フレームワーク を使用して実装できます。

  • Bottle: Bottle は、Python のデコレータ構文を使用して HTTP ルートを定義する軽量の Web フレームワークで、RESTful Web アプリケーションを迅速に構築できます。 Bottle には、テンプレート エンジン、データベース アクセス、静的ファイル処理などの便利な機能も含まれています。

  • Pyramid:Pyramid は、さまざまなタイプの Web アプリケーションの構築に使用できる、柔軟で高度にカスタマイズ可能な Web フレームワークです。アプリケーション。 Pyramid は、開発者がデータベース アクセス、フォーム検証、認証などの新しい機能を簡単に追加できるようにする多くの拡張メカニズムを提供します。

上記のフレームワークはすべて RESTful スタイルの Web アプリケーション開発をサポートしており、それぞれに独自の長所と短所があるため、開発者は自分のニーズに応じて適切なフレームワークを選択できます。

3. Flask RESTful API 例の説明

1) Flask-RESTful ライブラリの説明

Flask-RESTful は、RESTful を構築するための便利なツールを提供する Flask ベースの拡張ライブラリです。 API。以下は、Flask-RESTful の主な機能の一部です:

  • リソース クラス: Flask-RESTful は、次の作成に使用できるリソース基本クラスを提供します。リソース。 Resource クラスには、HTTP メソッド (GETPOSTPUTDELETE など) の処理ロジックが含まれており、いくつかの便利な機能を提供します。リクエストとレスポンスを処理するメソッド。

  • リクエスト パラメーターの解析: Flask-RESTful は、リクエスト パラメーターを解析するための RequestParser クラスを提供します。 RequestParser は、クエリ パラメーター、フォーム パラメーター、JSON パラメーターなどを Python タイプに自動的に解析でき、パラメーター タイプ、デフォルト値、存在する必要があること、およびその他の制限を指定するためのいくつかのオプションを提供します。

  • 応答の書式設定: Flask-RESTful は、応答データを書式設定するための marshal_with() デコレータを提供します。 marshal_with() デコレータは、Python オブジェクトを指定された出力形式 (JSON、XML など) に変換でき、出力フィールド、フィールド タイプ、ネストされたフィールドなどの指定などの機能をサポートします。

  • ルート定義: Flask-RESTful は、ルートとリソース間のマッピング関係を定義するための Api クラスを提供します。 API クラスには、リソース クラスと URL ルーティングをバインドするために使用される add_resource() メソッドが含まれています。

  • 例外処理: Flask-RESTful は、HTTP リクエストとレスポンスのエラーを処理するためのいくつかの例外クラスを提供します。 Flask-RESTful の例外クラスには、abortHTTPException などがあり、HTTP ステータス コードエラー メッセージ、等

要約すると、Flask-RESTful は、RESTful API の開発を簡素化するための便利なツールをいくつか提供します。 Flask-RESTful を使用すると、リソースの定義、リクエスト パラメーターの解析、応答データのフォーマット、ルートの定義、例外の処理などを迅速に行うことができるため、開発効率が向上し、エラーのリスクが軽減されます。

2) Flask-RESTful ライブラリのインストール

Flask-RESTful ライブラリをインストールするには、pip コマンドを使用します。ターミナルで次のコマンドを実行します。

pip3 install flask-restful

これにより、PyPI から Flask-RESTful ライブラリがダウンロードされ、ローカルの Python 環境にインストールされます。インストールが完了したら、コードに flask_restful モジュールをインポートし、Flask-RESTful によって提供される関数を使用して RESTful API を構築できます。

3) RESTful サンプルの説明

以下は、単純な To-Do リスト アプリケーションを実装する単純な Flask RESTful API の例です:

from flask import Flask, request
from flask_restful import Api, Resource, reqparse, fields, marshal_with
app = Flask(__name__)
api = Api(app)
todos = {}
todo_fields = {
    'id': fields.Integer,
    'task': fields.String,
    'status': fields.Boolean
}
class TodoList(Resource):
    @marshal_with(todo_fields)
    def get(self):
        return todos
    @marshal_with(todo_fields)
    def post(self):
        parser = reqparse.RequestParser()
        parser.add_argument('task', type=str, help='Task is required', required=True)
        args = parser.parse_args()
        todo_id = len(todos) + 1
        todo = {'task': args['task'], 'status': False}
        todos[todo_id] = todo
        return todo, 201
class TodoItem(Resource):
    @marshal_with(todo_fields)
    def get(self, todo_id):
        return todos[todo_id]
    def put(self, todo_id):
        parser = reqparse.RequestParser()
        parser.add_argument('task', type=str)
        parser.add_argument('status', type=bool)
        args = parser.parse_args()
        todo = todos[todo_id]
        if args['task']:
            todo['task'] = args['task']
        if args['status']:
            todo['status'] = args['status']
        return todo
    def delete(self, todo_id):
        del todos[todo_id]
        return '', 204
api.add_resource(TodoList, '/todos')
api.add_resource(TodoItem, &#39;/todos/<int:todo_id>&#39;)
if __name__ == &#39;__main__&#39;:
    app.run(debug=True)

Startup

# 配置环境变量
export FLASK_APP=restful-test.py
# 启动服务,公开访问需要加上--host=0.0.0.0
python -m flask run --host=0.0.0.0

この例では、Flask と Flask-RESTful ライブラリを使用して、To-Do リスト アプリケーション用の RESTful API を実装します。ここでは、いくつかの重要なコード スニペットについて説明します。

  • リソースの定義 : この例には、2 つのリソースがあります: TodoListTodoItemTodoList はすべての ToDo タスク リストの処理に使用され、TodoItem は 1 つのタスクの処理に使用されます。

  • リクエスト パラメーターの定義: この例では、Flask-RESTful ライブラリの RequestParser を使用してリクエスト パラメーターを解析します。 'task' および 'status' パラメーターを定義し、 add_argument() メソッドを使用してそれらのタイプとその他の制約を指定します。

  • 応答形式の定義: この例では、Flask-RESTful ライブラリの marshal_with() デコレータを使用して形式を定義します応答の。 todo_fields という名前のディクショナリを定義します。これには、To-Do タスクの idtask、および status フィールドが含まれます。

  • リクエスト メソッドを定義する: この例では、Flask-RESTful ライブラリの Resource クラスを使用してリクエスト メソッドを定義します。 タスクリスト、##を取得するために、GETPOSTPUTおよびDELETEメソッドを実装しました。 #タスクを追加タスクを更新、およびタスクを削除

  • ルートの追加: この例では、Flask-RESTful ライブラリの API クラスを使用してルートを追加します。 add_resource() メソッドを使用して、TodoList クラスと TodoItem クラスを対応する URL ルートにバインドします。

サンプルを実行した後、URL にアクセスして To-Do リスト アプリケーションの RESTful API を使用できます。たとえば、

すべてのタスクのリストを取得するには 、次の URL を使用できます。

# GET http://localhost:5000/todos
curl http://localhost:5000/todos

新しいタスク を追加するには、次の URL を使用できます。

# POST http://localhost:5000/todos
curl -XPOST http://localhost:5000/todos -d &#39;task=123&#39;
curl -XPOST http://localhost:5000/todos -d &#39;{"task":"456"}&#39;  --header "Content-Type: application/json"

単一タスク を取得するには、次の URL を使用できます。

# GET http://localhost:5000/todos/1
curl http://localhost:5000/todos/1

タスク を更新するには、次の URL を使用できます。 :

# PUT http://localhost:5000/todos/1
curl -XPUT http://localhost:5000/todos/1 -d &#39;{"task":"test"}&#39;  --header "Content-Type: application/json"
# 查看
curl http://localhost:5000/todos/1

削除するには タスク には、次の URL を使用できます:

# DELETE http://localhost:5000/todos/1
curl -XDELETE http://localhost:5000/todos/1

Python Flask RESTful の使用方法

以上がPython Flask RESTful の使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。