在我的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中建议一个解决方案吗?
答案 0 :(得分:6)
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()