2016-01-02 11 views
10

Ich habe Probleme, ein Wildcard-URL-Matching-Muster zu finden, die alle eingehenden URLs entspricht. Das passt nur eine URL, die nichts mehr als den Host-Namen hat:Asyncio und aiohttp Routen alle URLs Pfade zu Handler

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 

So sollte es der Handler jederzeit anrufen eine Anforderung unabhängig vom Pfad. Wenn seine http://127.0.0.1:9999/ oder http://127.0.0.1:9999/test/this/test/

Ich sah es hier oben http://aiohttp.readthedocs.org/en/stable/web.html#aiohttp-web-variable-handler ohne Erfolg für den richtigen Hinweis

Antwort

18

Sie app.router.add_route('GET', '/{tail:.*}', handle) für den Fang alle URLs nutzen können.