それはFlask
をサブクラス化することが可能です:Flaskでルートを持つメソッドをマークすることはできますか?
from flask import Flask
class MyServer(Flask):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def my_cool_method(self):
print("About to do some crazy productive work!")
このようにすることで、一つはMyServer
オブジェクトを作成し、ヒットが、メソッドを呼び出して、ルートを定義することができます。
my_server = MyServer(__name__)
@my_server.route("/my_cool_endpoint")
def my_cool_endpoint():
my_server.my_cool_method()
この一見不必要な(とかなり持続不可能な)ステップを切り出し、単にルートに方法を飾るためにすべての可能な方法はありますか?
私の擬似コードは次のように...
#!/usr/bin/env python3
from flask import Flask
class MyServer(Flask):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
@self.route("/my_cool_endpoint")
def my_cool_method(self):
print("About to do some crazy productive work!")
if __name__ == "__main__":
my_server = MyServer(__name__)
# We can now hit 127.0.0.1:8080/my_cool_endpoint... hopefully
my_server.run(port=8080)
私のモチベーションは、単にrun
オブジェクトおよびエンドポイントは、各APIの呼び出しにオブジェクトの状態を変更し、ヒットを取得してみましょうあるものになるだろう。
これは私が説明したように正確ではない場合は、私の目標を達成するための最小の攻撃方法は何ですか?
シーク何だと思うが、それは理解することはちょっと難しいです。シンプルなコントローラーがなぜあなたのために機能しないのですか? –
これを行わないでください。人々がこのパターンをどこから得ているのかは分かりませんが、それは意味がありません。あなたは工場のパターンを探しています。 – davidism
@davidism私はあなたが正しいと確信していますが、自分の問題に工場パターンを適用する方法がわかりません。私の質問から外挿するようです。私は、ユーザーが 'MyServer'をサブクラス化したライブラリを作成したいと思っています。ファクトリパターンは実際にはここでは使用できません(私が見る限り)。 – erip