aiohttp中UrlDispatcher的ResourcesView和RoutesView的目的是什么?

时间:2018-09-12 16:10:50

标签: aiohttp

我正在研究UrlDispatcher.resources()UrlDispatcher.routes()方法。

它们分别返回ResourcesViewRoutesView对象。

我想知道,这些观点的目的是什么?

我可以使用它们来以类似于Django或Django REST Framework的方式显示服务中可用的端点列表吗?

我认为它们不是正确的网络视图,因为它们没有对应于http方法的方法,例如get(request)是否不继承自ViewAbstractView

1 个答案:

答案 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资源具有用于GETPOST HTTP方法的两条路由。

/path2仅具有GET的路线。

app.router.resources允许对资源进行迭代,app.router.routes进行更深一层的迭代。