4

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

http://<base_uri>/some_string

我希望根据是否some_string是整数来不同地处理对它的请求。

使用 Sinatra,我可以通过“传递”来实现,如下所示:

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 中提出解决方案吗?

4

1 回答 1

6

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()
于 2013-04-24T08:38:59.533 回答