2013-04-24 16 views
4

在我的瓶的应用程序,我要揭露一个URI是这样的:瓶相当于Sinatra的“传球”

http://<base_uri>/some_string

,我想处理它的不同取决于some_string是否是一个整数的请求或不。

随着屈我可以通过“passing”实现这一如下图所示:

get '/:some_string' do 
    if is_integer(:some_string) 
    'Your URI contains an integer' 
    else 
    pass # This will pass the request on the the method below which can handle it 
end 

get '/*' do 
    'Your URI contains some string' 
end 

在这里,在所述第一呼叫路由pass让第二路由处理请求,如果是:some_string不是整数。

我在Flask中找不到任何等效的功能。有人可以在Flask中提出一个解决方案吗?

回答

6

Type conversion在URL路由可以为你做到这一点:

from flask import Flask 
import unittest 

app = Flask(__name__) 
app.debug = True 

@app.route('/<int:thing>') 
def num(thing): 
    return 'INT' 

@app.route('/<thing>') 
def string(thing): 
    return 'STR' 


class TestDispatch(unittest.TestCase): 

    def setUp(self): 
     self.client = app.test_client() 

    def test_int(self): 
     resp = self.client.get('/10') 
     self.assertEqual("INT", resp.data) 

    def test_str(self): 
     resp = self.client.get('/hello') 
     self.assertEqual("STR", resp.data) 


if __name__ == '__main__': 
    unittest.main()