2

URL パスを入力できる迅速で汚い Flask テスト サーバーが必要です

0.0.0.0/**something**

同じ名前の対応するメソッドを呼び出すようにします。

このようなもの:

from flask import Flask
app = Flask(__name__)

@app.route('/<action>')
def do_it(action=None):

    if {PSEUDO: The method exists, call it}
    else:
        return 'Action not found'

def something():

    return 'Did something'

if __name__ == '__main__':
    app.run()

Flask にはこれを支援するメカニズムがありますか、それともリフレクションをいじる必要がありますか?

4

2 に答える 2

4

クライアントがサーバー上で任意のコードを実行できるようにすることは、本当に悪い考えです。代わりに、使用可能なすべてのアクションをクラスに入れ、選択をクラスのメソッドに制限することを検討してください。

from flask import Flask
app = Flask(__name__)

class Actions:
    def something(self):
        return 'Did something'

    def something_else(self):
        return 'Did something else'

my_actions = Actions()

@app.route('/<action>')
def do_it(action = None):
    op = getattr(my_actions, action, None)
    if callable(op):
        return op()
    else:
        return 'Action not found'

if __name__ == '__main__':
    app.run(debug = True)
于 2013-06-26T17:09:33.923 に答える
3

それがどれほど厄介かはわかりませんが、かなり簡単に思えます:

  try:                                                                        
      return globals()[action]()                                              
  except KeyError:                                                           
      return 'Action not found' 
于 2013-06-26T16:53:29.160 に答える