0
点赞
收藏
分享

微信扫一扫

9.FastAPI Request对象

生态人 2022-01-13 阅读 105

9.FastAPI Request对象

在实际开发过程中,有些时候我们需要通过Request对象直接获取一些信息,如:我们希望获取客户端的IP等信息,此时我们在路由操作函数中直接定义类型为Request的对象参数,就可以在代码中使用Request对象进行数据的获取。

假设在路由函数中定义了request:Request,那么该对象可以获取到哪些信息呢?

操作说明
request.client.host客户端连接的 host
request.client.port客户端连接的端口号
request.method请求方法
request.base_url请求路径
request.headersheaders
request.cookiescookies
request.url请求url
request.url.componentsurl组成
request.url.scheme请求协议
request.url.hostname请求host
request.url.port请求端口
request.url.path请求path
request.url.query请求查询参数
request.path_params请求路径参数
request.query_params请求查询参数
request.form()表单数据
request.json()JSON数据
request.body()Body数据,返回值类型是 bytes

代码示例:

from fastapi import FastAPI
from fastapi import Request
​
app = FastAPI()
​
@app.get(path='/test/{a}')
async def test(request: Request):
    res = {
        # 客户端连接的 host
        "host": request.client.host,
        # 客户端连接的端口号
        "port": request.client.port,
        # 请求方法
        "method": request.method,
        # 请求路径
        "base_url": request.base_url,
        # request headers
        "headers": request.headers,
        # request cookies
        "cookies": request.cookies,
        # 请求 url
        "url": request.url,
        # 请求组成
        "components": request.url.components,
        # 请求协议
        "scheme": request.url.scheme,
        # 请求 host
        "hostname": request.url.hostname,
        # 请求端口
        "url_port": request.url.port,
        # 请求 path
        "path": request.url.path,
        # 请求查询参数
        "query": request.url.query,
        # 获取路径参数
        "path_params": request.path_params,
        # 获取查询参数
        "query_params": request.query_params
    }
    return res

执行请求:

curl http://127.0.0.1:8000/test/1?q=query
{
    "host":"127.0.0.1",
    "port":58982,
    "method":"GET",
    "base_url":{
        "_url":"http://127.0.0.1:8000/"
    },
    "headers":{
        "host":"127.0.0.1:8000",
        "user-agent":"curl/7.55.1",
        "accept":"*/*"
    },
    "cookies":{},
    "url":{
        "_url":"http://127.0.0.1:8000/test/1?q=query",
        "_components":[
            "http","127.0.0.1:8000","/test/1","q=query",""
        ]
    },
    "components":["http","127.0.0.1:8000","/test/1","q=query",""],
    "scheme":"http",
    "hostname":"127.0.0.1",
    "url_port":8000,
    "path":"/test/1",
    "query":"q=query",
    "path_params":{
        "a":"1"
    },
    "query_params":{
        "q":"query"
    }
}
举报

相关推荐

0 条评论