我正在研究UrlDispatcher.resources()和UrlDispatcher.routes()方法。
它们分别返回ResourcesView和RoutesView对象。
我想知道,这些观点的目的是什么?
我可以使用它们来以类似于Django或Django REST Framework的方式显示服务中可用的端点列表吗?
我认为它们不是正确的网络视图,因为它们没有对应于http方法的方法,例如get(request)
是否不继承自View
或AbstractView
?
答案 0 :(得分:1)
这些视图是不可变的对象,用于查找/迭代路由和资源。
类似于dict.keys()
和dict.items()
。
内部,aiohttp路由器的组织方式如下。
我们假设我们有一个路由表,例如:
app.add_routes([
web.get('/path1', handler1),
web.post('/path1', handler2),
web.get('/path2', handler3)])
内部,我们有两个资源:/path1
和/path2
。
/path1
资源具有用于GET
和POST
HTTP方法的两条路由。
/path2
仅具有GET
的路线。
app.router.resources
允许对资源进行迭代,app.router.routes
进行更深一层的迭代。