简介
aiohttp.web.Request
请求对象携带各种HTTP请求信息,以及endpoint的路径匹配信息。
获取请求级环境信息
@get_mapping('/echo/{id}')
async def echo(request: Request):
return {
'remote': request.remote,
'method': request.method,
'route': request.match_info.get_info()['formatter'],
'url': {
'host': request.url.host,
'scheme': request.url.scheme,
'path': request.url.path,
'query_string': request.url.query_string,
'path_qs': request.url.path_qs,
'url': str(request.url),
}
}
如果在浏览器请求http://localhost:8080/echo/你好?a=1&b=哈喽
,可以得到返回:
{
"remote": "::1",
"method": "GET",
"route": "/echo/{id}",
"url": {
"host": "localhost",
"scheme": "http",
"path": "/echo/你好",
"query_string": "a=1&b=哈喽",
"path_qs": "/echo/你好?a=1&b=哈喽",
"url": "http://localhost:8080/echo/%E4%BD%A0%E5%A5%BD?a=1&b=%E5%93%88%E5%96%BD"
}
}
完整API
class Request(BaseRequest):
@reify
def remote(self) -> Optional[str]:
"""Remote IP of client initiated HTTP request.
The IP is resolved in this order:
- overridden value by .clone(remote=new_remote) call.
- peername of opened socket
"""
...
@reify
def method(self) -> str:
"""Read only property for getting HTTP method.
The value is upper-cased str like 'GET', 'POST', 'PUT' etc.
"""
...
@reify
def match_info(self) -> "UrlMappingMatchInfo":
"""Result of route resolving."""
...
@reify
def url(self) -> URL: ...