动态路径基于URL
问题描述:
到烧瓶行动
希望有一个快速和肮脏的瓶测试服务器在那里我可以输入一个URL路径动态路径基于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()
确实瓶有一个机制,以帮助这还是我变得混乱与反思?
答
不知道那是多么凌乱,但似乎相当直截了当:
try:
return globals()[action]()
except KeyError:
return 'Action not found'
答
这是一个非常糟糕的主意,以允许客户端在服务器上运行任意代码。相反,考虑将所有可用操作放在一个班级中,并限制选择班级的方法:
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)
+0
@ Miguel-谢谢,是的,我知道这是不好的 - 只是需要一些问答,但你的问题是明智的方式 – Yarin
是的,这很容易 - 谢谢! – Yarin