2016-01-02 25 views
10

Tôi gặp khó khăn khi tìm mẫu đối sánh url ký tự đại diện khớp với tất cả các url đến. URL này chỉ khớp với một url không có gì khác hơn tên máy chủ:Asyncio và aiohttp định tuyến tất cả các đường dẫn url đến trình xử lý

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 

Vì vậy, nó sẽ gọi trình xử lý bất cứ khi nào có yêu cầu bất kể đường dẫn. Nếu http://127.0.0.1:9999/ hoặc http://127.0.0.1:9999/test/this/test/

Tôi nhìn nó lên đây http://aiohttp.readthedocs.org/en/stable/web.html#aiohttp-web-variable-handler không thành công cho các đầu mối ngay

Trả lời

18

Bạn có thể sử dụng app.router.add_route('GET', '/{tail:.*}', handle) để bắt tất cả các url.

Các vấn đề liên quan