fastapi-请求与响应

本文详细介绍了FastAPI中的请求(Request)和响应(Response)对象,包括它们的属性、方法以及各种类型的响应如HTMLResponse、JSONResponse等。Request对象提供了访问HTTP请求的各个部分的能力,如URL、标头、查询参数等。Response对象则允许你构建并返回不同的HTTP响应,包括设置状态码、内容类型以及处理JSON、HTML、文件等内容。

FastAPI中的RequestResponse是用于处理HTTP请求和响应的两个核心对象。它们提供了许多功能和属性,使你能够更灵活地处理和构建HTTP请求和响应

Request

你可以在视图函数中声明一个变量,并指定类型为Request,那么你就可以操作这个Request对象了。如下:

from fastapi import Request

@app.get("/home")
async def home(request: Request):
    print(type(request), request)
    return {
   
   'code': 1}

Request具有如下属性:

  • app: 程序入口对象,即FastAPI对象
  • url: 获取当前完整的url,默认情况下返回一个starlette.datastructures.URL对象。例如: http://localhost:8000/home?name=laozhang
  • base_url: 获取请求的路径,默认情况下返回一个starlette.datastructures.URL对象。例如:http://localhost:8000/
  • headers: 获取请求的标头,默认情况下返回一个starlette.datastructures.Headers对象
  • query_params: 获取查询参数,默认情况下返回一个starlette.datastructures.QueryParams对象
  • path_params: 路径参数,默认情况下返回一个dict类型
  • cookies: cookie信息,默认情况下返回一个dict类型
  • client: 客户端信息,默认情况下返回一个starlette.datastructures.Address类型。例如:Address(host='127.0.0.1', port=63902)
  • session: session信息,默认情况下返回一个dict类型。值得注意的是,在FastAPI中,使用session需要使用到starlette-session库,并且需要将SessionMiddleware添加到中间件中,否则将会引发报错,使用如下:
from redis import Redis
from fastapi import FastAPI
from fastapi import Request
from starlette_session import SessionMiddleware
from starlette_session.backends import BackendType

app = FastAPI()
r = Redis.from_url("redis://:12345678@localhost:6379/1")
app.add_middleware(
    SessionMiddleware,
    secret_key="secret",
    cookie_name="cookie22",
    backend_type=BackendType.redis,
    backend_client=r
)

@app.get("/home")
async def home(request: Request):
    print(type(request.session), request.session)
    return {
   
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值