外贸网站推广企业网站建设及推广费用怎么入账
目录
- 示例
 - 测试
 - 使用 `curl` 访问:
 - 使用 `requests` 访问:
 - 预期返回:
 
- 浏览器访问
 
示例
下面是一个使用 @app.patch("") 的 FastAPI 示例,该示例实现了一个简单的用户信息更新 API。我们使用 pydantic 定义数据模型,并使用 patch 方法部分更新用户信息。
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel, Field
from typing import Optionalapp = FastAPI()# 模拟的用户数据
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作为模拟数据库。 - 使用 
@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 代码中调用,可以这样做:
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 请求,但 不能直接在地址栏访问,因为浏览器的地址栏只能发送 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” 发送请求,查看响应结果。
 


