如何在Python的FastAPI框架中获取并返回POST请求的请求体内容?
FastAPI获取POST请求体的正确实现方案
你遇到的返回十六进制值的原因是:Request.json是异步协程方法,你没有使用await关键字调用执行,直接返回了方法对象本身,FastAPI序列化时就会输出该方法在内存中的十六进制地址。
实现方案
方案1:通过Request对象手动解析JSON
适合请求体结构不固定的场景,示例代码如下:
from fastapi import FastAPI, Request app = FastAPI() @app.post("/your-route") async def process_request(request: Request): # 加await执行异步方法,获取解析后的请求体字典 request_body = await request.json() # 这里写你的业务逻辑处理代码 # 处理完成后再执行数据库写入等操作 # 按需返回请求体或处理结果 return request_body
方案2:通过Pydantic模型接收(FastAPI官方推荐)
适合请求体结构固定的场景,自动完成参数校验和类型转换,无需手动解析JSON:
from fastapi import FastAPI from pydantic import BaseModel # 按照实际请求体结构定义模型 class UserData(BaseModel): username: str age: int email: str | None = None # 可选字段示例 app = FastAPI() @app.post("/your-route") async def process_request(body: UserData): # 直接通过属性读取字段值 print(body.username) print(body.age) # 业务逻辑处理、数据库操作 # 直接返回模型对象会自动序列化为JSON return body
内容的提问来源于stack exchange,提问作者kdrumz
相关产品推荐
相关产品推荐

