現(xiàn)在建網(wǎng)站賺錢嗎杭州互聯(lián)網(wǎng)公司排名榜
目錄
- 示例
- 測試
- 使用 `curl` 訪問:
- 使用 `requests` 訪問:
- 預期返回:
- 瀏覽器訪問
示例
下面是一個使用 @app.patch("")
的 FastAPI 示例,該示例實現(xiàn)了一個簡單的用戶信息更新 API。我們使用 pydantic
定義數(shù)據(jù)模型,并使用 patch
方法部分更新用戶信息。
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel, Field
from typing import Optionalapp = FastAPI()# 模擬的用戶數(shù)據(jù)
users_db = {1: {"name": "Alice", "age": 25, "email": "alice@example.com"},2: {"name": "Bob", "age": 30, "email": "bob@example.com"},
}# 請求模型,所有字段都是可選的
class UserUpdate(BaseModel):name: Optional[str] = Field(None, title="用戶名")age: Optional[int] = Field(None, title="年齡", ge=0)email: Optional[str] = Field(None, title="郵箱")@app.patch("/users/{user_id}")
def update_user(user_id: int, user_update: UserUpdate):if user_id not in users_db:raise HTTPException(status_code=404, detail="User not found")# 更新用戶信息existing_user = users_db[user_id]update_data = user_update.dict(exclude_unset=True) # 僅獲取傳入的字段existing_user.update(update_data)return {"message": "User updated successfully", "user": existing_user}
這個示例:
- 維護了一個
users_db
作為模擬數(shù)據(jù)庫。 - 使用
@app.patch("/users/{user_id}")
處理用戶信息的部分更新。 - 通過
exclude_unset=True
確保只更新請求體中提供的字段,而不會覆蓋未提供的字段。
你可以運行它,并使用 PATCH
請求測試,例如:
{"name": "Charlie"
}
這將只更新用戶的 name
,而不會修改 age
或 email
。
測試
你可以使用 curl
、httpx
或者 requests
來訪問 PATCH
端點。下面是一個示例:
使用 curl
訪問:
curl -X PATCH "http://127.0.0.1:8000/users/1" \-H "Content-Type: application/json" \-d '{"name": "Charlie", "age": 28}'
這個請求會更新 id=1
的用戶,將 name
改為 "Charlie"
,并將 age
改為 28
。
使用 requests
訪問:
如果你在 Python 代碼中調(diào)用,可以這樣做:
import requestsurl = "http://127.0.0.1:8000/users/1"
payload = {"name": "Charlie", "age": 28}
headers = {"Content-Type": "application/json"}response = requests.patch(url, json=payload, headers=headers)print(response.json()) # 輸出更新后的用戶信息
預期返回:
{"message": "User updated successfully","user": {"name": "Charlie","age": 28,"email": "alice@example.com"}
}
可以看到,name
和 age
被成功更新,而 email
仍然保持原值。
你可以修改 payload
只提供部分字段,例如 {"email": "charlie@example.com"}
,就只會更新 email
,其他字段不會改變。
另外,你可以在瀏覽器中訪問 FastAPI 的 Swagger UI 或 Redoc 來測試 PATCH
請求,但 不能直接在地址欄訪問,因為瀏覽器的地址欄只能發(fā)送 GET
請求,而 PATCH
請求需要使用 API 測試工具或 JavaScript 代碼。
瀏覽器訪問
FastAPI 自帶了交互式文檔,你可以在瀏覽器中打開:
- Swagger UI: http://127.0.0.1:8000/docs
- Redoc: http://127.0.0.1:8000/redoc
步驟:
- 啟動 FastAPI 服務器(運行
uvicorn
)。 - 在瀏覽器打開
http://127.0.0.1:8000/docs
。 - 找到
PATCH /users/{user_id}
端點,點擊 “Try it out”。 - 輸入
user_id
,在Request body
里填入 JSON,例如:{"name": "Charlie","age": 28 }
- 點擊 “Execute” 發(fā)送請求,查看響應結(jié)果。