烧瓶相当于Sinatra的“过客”

时间:2013-04-24 08:17:53

标签: python sinatra flask

在我的Flask应用程序中,我想公开一个这样的URI:

http://<base_uri>/some_string

我希望以不同的方式处理对它的请求,具体取决于some_string是否为整数。

使用Sinatra,我可以通过“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中建议一个解决方案吗?

1 个答案:

答案 0 :(得分:6)

url路由中的

Type conversion可以为您执行此操作:

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()