动态路径基于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' 
+0

是的,这很容易 - 谢谢! – Yarin

这是一个非常糟糕的主意,以允许客户端在服务器上运行任意代码。相反,考虑将所有可用操作放在一个班级中,并限制选择班级的方法:

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