1. 返回不同的状态码的 JSON 响应:
from fastapi import FastAPI
from fastapi.responses import JSONResponse
app = FastAPI()
@app.get("/items/{item_id}/", response_class=JSONResponse)
async def read_item(item_id: int):
if item_id == 42:
content = {"message": "Item found"}
return JSONResponse(content=content, status_code=200)
else:
content = {"message": "Item not found"}
return JSONResponse(content=content, status_code=404)
在这个例子中,我们使用了 JSONResponse 类,并通过 status_code 参数指定了不同的状态码。
2. 返回不同状态码的 HTML 响应:
from fastapi import FastAPI
from fastapi.responses import HTMLResponse
app = FastAPI()
@app.get("/items/{item_id}/", response_class=HTMLResponse)
async def read_item(item_id: int):
if item_id == 42:
content = "<html><body><h1>Item found</h1></body></html>"
return HTMLResponse(content=content, status_code=200)
else:
content = "<html><body><h1>Item not found</h1></body></html>"
return HTMLResponse(content=content, status_code=404)
在这个例子中,我们使用了 HTMLResponse 类,并通过 status_code 参数指定了不同的状态码。
3. 使用默认响应模型和状态码:
from fastapi import FastAPI, HTTPException
app = FastAPI()
class ItemNotFoundModel:
detail: str = "Item not found"
@app.get("/items/{item_id}/")
async def read_item(item_id: int):
if item_id != 42:
raise HTTPException(status_code=404, detail=ItemNotFoundModel())
return {"message": "Item found"}
在这个例子中,我们使用了 HTTPException 异常,并通过 status_code 参数指定了状态码,同时也可以返回一个带有详细信息的响应模型。
通过这些示例,你可以更灵活地在 FastAPI 中控制返回的响应状态码。
转载请注明出处:http://www.pingtaimeng.com/article/detail/7412/FastAPI