在 FastAPI 中,你可以使用 JSONResponse 或 HTMLResponse 类来返回带有 Cookie 的响应。以下是一些示例:

1. 返回带有 Cookie 的 JSON 响应:
from fastapi import FastAPI, Cookie, HTTPException
from fastapi.responses import JSONResponse

app = FastAPI()

@app.get("/items/")
async def read_items(*, session_token: str = Cookie(None)):
    if session_token is None:
        raise HTTPException(status_code=400, detail="No session_token provided")
    
    content = {"message": "Read all items"}
    response = JSONResponse(content=content)
    response.set_cookie(key="session_token", value=session_token, expires=1800)  # expires in 30 minutes
    return response

在这个例子中,我们通过 Cookie 参数接收名为 session_token 的 Cookie。然后,我们使用 JSONResponse 返回 JSON 响应,并使用 set_cookie 方法为响应设置 Cookie。

2. 返回带有 Cookie 的 HTML 响应:
from fastapi import FastAPI, Cookie, HTTPException
from fastapi.responses import HTMLResponse

app = FastAPI()

@app.get("/items/", response_class=HTMLResponse)
async def read_items(*, session_token: str = Cookie(None)):
    if session_token is None:
        raise HTTPException(status_code=400, detail="No session_token provided")

    content = "<html><body><h1>Read all items</h1></body></html>"
    response = HTMLResponse(content=content)
    response.set_cookie(key="session_token", value=session_token, expires=1800)  # expires in 30 minutes
    return response

在这个例子中,我们使用 Cookie 参数接收名为 session_token 的 Cookie。然后,我们使用 HTMLResponse 返回 HTML 响应,并使用 set_cookie 方法为响应设置 Cookie。

通过使用这些方法,你可以轻松地在 FastAPI 中返回带有 Cookie 的响应。


转载请注明出处:http://www.zyzy.cn/article/detail/7410/FastAPI