2016-01-02 32 views
10

Mam problem ze znalezieniem pasującego wzorca dopasowania adresu URL, który pasuje do wszystkich adresów URL przychodzących. To po prostu pasuje do adresu URL, który nie ma nic więcej niż hostname:Asyncio i aiohttp kierują wszystkie ścieżki adresów URL do obsługi

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 

Tak powinno wywołania obsługi w każdej chwili jest wniosek, niezależnie od ścieżki. Jeśli jego http://127.0.0.1:9999/ lub http://127.0.0.1:9999/test/this/test/

Spojrzałem go tutaj http://aiohttp.readthedocs.org/en/stable/web.html#aiohttp-web-variable-handler bez powodzenia dla prawego trop

Odpowiedz

18

Można wykorzystać app.router.add_route('GET', '/{tail:.*}', handle) do połowu wszystkich adresów URL.