23

すべての着信 URL に一致するワイルドカード URL 一致パターンを見つけるのに苦労しています。これは、ホスト名以外の何もない URL に一致します。

import asyncio
from aiohttp import web

@asyncio.coroutine
def handle(request):
    print('there was a request')
    text = "Hello "
    return web.Response(body=text.encode('utf-8'))

@asyncio.coroutine
def init(loop):
    app = web.Application(loop=loop)
    app.router.add_route('GET', '/', handle)

    srv = yield from loop.create_server(app.make_handler(),
                                        '127.0.0.1', 9999)
    print("Server started at http://'127.0.0.1:9999'")
    return srv

loop = asyncio.get_event_loop()
loop.run_until_complete(init(loop))
try:
    loop.run_forever()
except KeyboardInterrupt:
    pass 

したがって、パスに関係なく、リクエストがあるときはいつでもハンドラーを呼び出す必要があります。http://127.0.0.1:9999/またはhttp://127.0.0.1:9999/test/this/test/の場合

私はここでそれを調べましたhttp://aiohttp.readthedocs.org/en/stable/web.html#aiohttp-web-variable-handler正しい手がかりが得られませんでした

4

1 に答える 1

48

app.router.add_route('GET', '/{tail:.*}', handle)すべての URL をキャッチするために使用できます。

コロン ( :) の後の部分は正規表現です。.*regexp は、パス区切り文字 ( /) やその他の記号を含むすべてを記述します。

于 2016-01-02T13:05:12.417 に答える