Abstract Base Classes¶
Abstract routing¶
aiohttp has abstract classes for managing web interfaces.
The most part of aiohttp.web
is not intended to be inherited
but few of them are.
aiohttp.web is built on top of few concepts: application, router, request and response.
router is a pluggable part: a library user may build a router from scratch, all other parts should work with new router seamlessly.
aiohttp.abc.AbstractRouter
has the only mandatory method:
aiohttp.abc.AbstractRouter.resolve()
coroutine. It must return an
aiohttp.abc.AbstractMatchInfo
instance.
If the requested URL handler is found
aiohttp.abc.AbstractMatchInfo.handler()
is a web-handler for
requested URL and aiohttp.abc.AbstractMatchInfo.http_exception
is None
.
Otherwise aiohttp.abc.AbstractMatchInfo.http_exception
is an instance of
HTTPException
like 404: NotFound or 405: Method
Not Allowed. aiohttp.abc.AbstractMatchInfo.handler()
raises
http_exception
on call.
- class aiohttp.abc.AbstractRouter[source]¶
Abstract router,
aiohttp.web.Application
accepts it as router parameter and returns asaiohttp.web.Application.router
.- async resolve(request)[source]¶
Performs URL resolving. It’s an abstract method, should be overridden in router implementation.
- Parameters:
request –
aiohttp.web.Request
instance for resolving, the request hasaiohttp.web.Request.match_info
equals toNone
at resolving stage.- Returns:
aiohttp.abc.AbstractMatchInfo
instance.
- class aiohttp.abc.AbstractMatchInfo[source]¶
Abstract match info, returned by
aiohttp.abc.AbstractRouter.resolve()
call.- http_exception¶
aiohttp.web.HTTPException
if no match was found,None
otherwise.
- async handler(request)¶
Abstract method performing web-handler processing.
- Parameters:
request –
aiohttp.web.Request
instance for resolving, the request hasaiohttp.web.Request.match_info
equals toNone
at resolving stage.- Returns:
aiohttp.web.StreamResponse
or descendants.- Raise:
aiohttp.web.HTTPException
on error
- async expect_handler(request)¶
Abstract method for handling 100-continue processing.
Abstract Class Based Views¶
For class based view support aiohttp has abstract
AbstractView
class which is awaitable (may be uses like
await Cls()
or yield from Cls()
and has a request as an
attribute.
- class aiohttp.abc.AbstractView[source]¶
An abstract class, base for all class based views implementations.
Methods
__iter__
and__await__
should be overridden.- request¶
aiohttp.web.Request
instance for performing the request.
Abstract Access Logger¶
- class aiohttp.abc.AbstractAccessLogger[source]¶
An abstract class, base for all
aiohttp.web.RequestHandler
access_logger
implementationsMethod
log
should be overridden.- log(request, response, time)[source]¶
- Parameters:
request –
aiohttp.web.Request
object.response –
aiohttp.web.Response
object.time (float) – Time taken to serve the request.
Abstract Resolver¶
- class aiohttp.abc.AbstractResolver[source]¶
An abstract class, base for all resolver implementations.
Method
resolve
should be overridden.- resolve(host, port, family)[source]¶
Resolve host name to IP address.
- Parameters:
- Returns:
list of
aiohttp.abc.ResolveResult
instances.
- class aiohttp.abc.ResolveResult[source]¶
Result of host name resolution.
- hostname¶
The host name that was provided.
- host¶
The IP address that was resolved.
- port¶
The port that was resolved.
- family¶
The address family that was resolved.
- proto¶
The protocol that was resolved.
- flags¶
The flags that were resolved.