2

想要一个快速而肮脏的 Flask 测试服务器,我可以在其中输入 url 路径

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 回答