主页 > 电脑硬件  > 

fastapi中的patch请求

fastapi中的patch请求

目录 示例测试使用 `curl` 访问:使用 `requests` 访问:预期返回: 浏览器访问

示例

下面是一个使用 @app.patch("") 的 FastAPI 示例,该示例实现了一个简单的用户信息更新 API。我们使用 pydantic 定义数据模型,并使用 patch 方法部分更新用户信息。

from fastapi import FastAPI, HTTPException from pydantic import BaseModel, Field from typing import Optional app = FastAPI() # 模拟的用户数据 users_db = { 1: {"name": "Alice", "age": 25, "email": "alice@example "}, 2: {"name": "Bob", "age": 30, "email": "bob@example "}, } # 请求模型,所有字段都是可选的 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 requests url = "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 " } }

可以看到,name 和 age 被成功更新,而 email 仍然保持原值。

你可以修改 payload 只提供部分字段,例如 {"email": "charlie@example "},就只会更新 email,其他字段不会改变。

另外,你可以在浏览器中访问 FastAPI 的 Swagger UI 或 Redoc 来测试 PATCH 请求,但 不能直接在地址栏访问,因为浏览器的地址栏只能发送 GET 请求,而 PATCH 请求需要使用 API 测试工具或 JavaScript 代码。

浏览器访问

FastAPI 自带了交互式文档,你可以在浏览器中打开:

Swagger UI: http://127.0.0.1:8000/docsRedoc: 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” 发送请求,查看响应结果。

标签:

fastapi中的patch请求由讯客互联电脑硬件栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“fastapi中的patch请求