Aiohttp 路由 (aiohttp.web.RouteTableDef)
Aiohttp routing (aiohttp.web.RouteTableDef)
我对 RouteTableDef 有疑问。
有一些项目的路由结构是这样的:
1) 有文件 route.py
.
routes.py
from aiohttp import web
routes = web.RouteTableDef()
2) 在不同的文件中有一些处理程序,例如:
handler1.py
from aiohttp import web
from routes import routes
@routes.get('/get')
async def handle(request):
name = request.match_info.get('name', "Anonymous")
text = "Hello, " + name
return web.Response(text=text)
等等。
3) 和运行应用程序的主文件:
from aiohttp import web
from routes import routes
if __name__ == '__main__':
app = web.Application()
app.router.add_routes(routes)
web.run_app(app, host='localhost', port=8877)
想法是:
所有路由都存储在 routes
变量中,当我们想创建新的处理程序时,我们从 routes.py
导入该变量并使用它。
为了将路由注册到应用程序,我们从 routes.py
.
导入 routes
以及如何使其与 aiohttp v3.3.2 一起使用?
问题是:它适用于 aiohttp 版本 2.3.10。
但是有一个真正的项目用这种路由方式并且有效。
如何创建一个单一的地方来存储路线?
我想问题出在 lib 版本中,因为该项目不适用于最新版本的 aiohttp。
将请求处理程序 handle
导入到 web.Application
创建和运行的文件中。在从 routes.py
导入 routes
之前导入它
这里的问题是导入的顺序,正如已经回答的那样。这就是我在每个文件中创建一个 web.RouteTableDef()
然后将它们放在一起的原因之一 app.router
:
from .dashboard import routes as dashboard_routes
from .posts import routes as posts_routes
app.router.add_routes([
*dashboard_routes,
*posts_routes,
])
我对 RouteTableDef 有疑问。
有一些项目的路由结构是这样的:
1) 有文件 route.py
.
routes.py
from aiohttp import web
routes = web.RouteTableDef()
2) 在不同的文件中有一些处理程序,例如: handler1.py
from aiohttp import web
from routes import routes
@routes.get('/get')
async def handle(request):
name = request.match_info.get('name', "Anonymous")
text = "Hello, " + name
return web.Response(text=text)
等等。
3) 和运行应用程序的主文件:
from aiohttp import web
from routes import routes
if __name__ == '__main__':
app = web.Application()
app.router.add_routes(routes)
web.run_app(app, host='localhost', port=8877)
想法是:
所有路由都存储在 routes
变量中,当我们想创建新的处理程序时,我们从 routes.py
导入该变量并使用它。
为了将路由注册到应用程序,我们从 routes.py
.
导入 routes
以及如何使其与 aiohttp v3.3.2 一起使用?
问题是:它适用于 aiohttp 版本 2.3.10。
但是有一个真正的项目用这种路由方式并且有效。
如何创建一个单一的地方来存储路线?
我想问题出在 lib 版本中,因为该项目不适用于最新版本的 aiohttp。
将请求处理程序 handle
导入到 web.Application
创建和运行的文件中。在从 routes.py
routes
之前导入它
这里的问题是导入的顺序,正如已经回答的那样。这就是我在每个文件中创建一个 web.RouteTableDef()
然后将它们放在一起的原因之一 app.router
:
from .dashboard import routes as dashboard_routes
from .posts import routes as posts_routes
app.router.add_routes([
*dashboard_routes,
*posts_routes,
])