aiohttp
使用抽象类来管理web接口。
aiohttp.web
中大部分类都不打算是可以继承的,只有几个是可以继承的。
aiohttp.web
建立在这几个概念之上: 应用(application),路由(router),请求(request)和响应(response)。
路由(router)是一个可插拔的部分: 用户可以从头开始创建一个新的路由库,不过其他的部分必须与这个新路由无缝契合才行。
AbstractRouter只有一个必须(覆盖)的方法: AbstractRouter.resolve()
协程方法。同时必须返回AbstractMatchInfo
实例对象。
如果所请求的URL的处理器发现AbstractMatchInfo.handler()
所返回的是web处理器,那AbstractMatchInfo.http_exception
则为None。
否则的话AbstractMatchInfo.http_exceptio
n会是一个HTTPException
实例,如404: NotFound
或 405: Method Not Allowed
。如果调用AbstractMatchInfo.handler()
则会抛出http_exception
。
class aiohttp.abc.AbstractRouter
此类是一个抽象路由类,可以指定aiohttp.web.Application
中的router参数来传入此类的实例,使用aiohttp.web.Application.router来查看返回.
coroutine resolve(request)
URL处理方法。该方法是一个抽象方法,需要被继承的类所覆盖。
参数:
request - 用于处理请求的aiohttp.web.Request
实例。在处理时aiohttp.web.Request.match_info
会被设置为None。
返回:
返回AbstractMathcInfo
实例对象。
class aiohttp.abc.AbstractMatchInfo
抽象的匹配信息,由AbstractRouter.resolve()
返回。
http_exception
如果没有匹配到信息则是aiohttp.web.HTTPException
否则是None。
coroutine handler(request)
执行web处理器程序的抽象方法。
参数:
request - 用于处理请求的aiohttp.web.Request
实例。在处理时aiohttp.web.Request.match_info
会被设置为None。
返回:
返回aiohttp.web.StreamResponse
或其派生类。
可能会抛出的异常:
所抛出的异常类型是aiohttp.web.HTTPException
。
coroutine expect_handler(request)
用户处理100-continue的抽象方法。
aiohttp
提供抽象类 AbstractView
来对基于类的视图进行支持,而且还是一个awaitable
对象(可以应用在await Cls()
或yield from Cls()
中,同时还有一个request
属性。)
class aiohttp.AbstarctView
一个用于部署所有基于类的视图的基础类。
__iter__和__await__方法需要被覆盖。
request
用于处理请求的aiohttp.web.Request
实例。
class aiohttp.abc.AbstractCookieJar
此类所生成的cookie jar实例对象可以作为ClientSession.cookie_jar
所需要的对象。
jar中包含用于存储内部cookie数据的Morsel组件。
提供一个统计所存储的cookies的API:
len(session.cookie_jar)
jar也可以被迭代:
for cookie in session.cookie_jar:
print(cookie.key)
print(cookie["domain"])
此类用于存储cookies,同时提供collection.abc.Iterable和collections.abc.Sized的功能。
update_cookies(cookies, response_url=None)
更新由服务器返回的Set-Cookie头所设置的cookies。
参数:
cookies - 接受collection.abc.Mapping
对象(如dict, SimpleCookie等)或由服务器响应返回的可迭代cookies键值对。
response_url(str) - 响应该cookies的URL,如果设置为None则该cookies为共享cookies。标准的cookies应该带有服务器URL,只在请求此服务器时发送,共享的话则会向全部的客户端请求都发送。
filter_cookies(request_url)
返回jar中可以被此URL接受的cookies和可发送给给定URL的客户端请求的Cookies 头。
参数:
request_url (str) - 想要查询cookies的请求URL。
返回:
返回包含过滤后的cookies的http.cookies.SimpleCookie
对象。
class aiohttp.abc.AbstractAccessLogger
所有RequestHandler
中实现access_logger
的基础类。
log方法需要被覆盖。
log(request, response, time)
参数:
request - aiohttp.web.Request
对象。
reponse - aiohttp.web.Response
对象。
time (float) - 响应该请求的时间戳。