Restful ルーティングは、すべての異なるアプリケーションで一貫したルーティングを実現するための推進手段です。 REST は Representational State Transfer です。 HTTP は、一貫性があり、人間が判読できる、機械が判読できる方法で使用されます。
標準は GET、POST、PATCH、PUT、DELETE です。
以下に、フロントとの間で情報を取得/提供し、必要なアクションを実行するための、flask API データベース内のいくつかの RESTful ルートの例を示します。
flask を使用したサーバー側のユーザーの GET の例は、以下のコードを使用しています。
まず、これらのアイテムもインポートする必要があります。 db インポートは、後で DELETE の例で使用します。
from flask import request (*Used for POST and PATCH*) from config import db, api, app from flask_restful import Resource from models.user import User
インポートが機能するには、構成ファイルを以下のように設定する必要があります。
db = SQLAlchemy(app=app, metadata=metadata) api = Api(app=app)
ユーザー ルートの GET コード:
class UsersResource(Resource): def get(self): users = [user.to_dict() for user in User.query.all()] return users, 200 api.add_resource(UsersResource, "/api/users", endpoint="users")
このコードを分解するには。
Users リソースのクラスを作成し、そのリソースを引数として指定する必要があります。
次にget用の関数を作成します。この関数は User テーブルにクエリを実行し、すべてのユーザーのリストを作成して転送用の辞書に変換し、Web ページ上で JSON として表示できるようにします。次に、リストと、リクエストが成功したことを示すステータス コード 200 を返します。
最後にリソースを作成する必要があります。使用しているリソース、パス、エンドポイントに名前を付けます。 /api はパスの前に追加され、ホスティング Web サイトがフロントエンド ルートとバックエンド ルートを識別できるようにします。
DELETE の場合は、単一ユーザーの削除用に別のリソースを作成する必要があります。以下のコードを参照してください:
class UserResource(Resource): def delete(self, id): user= User.query.get(id) db.session.delete(user) db.session.commit() return {}, 204 api.add_resource(UserResource, "/api/user/", endpoint="user")
取得とは異なる削除で何が起こっているのかをさらに説明するには、いくつかの点があります。最初は 1 人のユーザーを削除するだけなので、新しいリソースを作成する必要があります。同様に設定されていますが、複数ではありません。
次に、削除関数を作成します。削除するユーザーを決定するためにフロントエンドから送信された ID を渡す必要があるため、2 つの引数が必要になります。次に、db session delete と commit を使用してデータベースを更新します。その後、返送するものは何もないため空の応答を返し、削除のステータス (204) を返します。
最後にリソースを作成する必要があります。今回はUserResourceを使用します。パスは単数であること、フロントエンドに渡された ID を持つこと、およびエンドポイントも単数であることとは異なります。
RESTful ルーティングにより、異なるアプリケーション間で切り替えるときに、誰もがバックエンド ルーティングに従うことができ、標準化されたパスを知ることができる標準が存在します。さらに、パスがすっきりして読みやすくなります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3