9.FastAPI Request对象

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"
    }
}
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Janeb1018

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值