4

Flask アプリケーションで、次のような URI を公開したいと考えています。

http://<base_uri>/some_string

some_stringが整数であるかどうかに応じて、リクエストを異なる方法で処理したいと考えています。

シナトラを使用すると、以下に示すように「渡す」ことでそれを実現できます。

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場合、2 番目のルートにリクエストを処理させます。: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 に答える