想要一个快速而脏的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是否有一种机制可以帮助解决这个问题,还是我必须弄乱反思?
答案 0 :(得分: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)
答案 1 :(得分:3)
不确定它有多乱,但看起来很简单:
try:
return globals()[action]()
except KeyError:
return 'Action not found'