admin管理员组文章数量:1794759
FastAPI后台开发基础(11): Form 表单数据使用
示例代码
简单的表单数据
代码语言:python代码运行次数:0运行复制@app.post("/login/")
async def login(data_a: Annotated[str, Form()], data_b: Annotated[str, Form()]):
return {"username": data_a, "password": data_b}
复杂表单数据
代码语言:python代码运行次数:0运行复制class FormDataModel(BaseModel):
user_name: str
age: int
gender: Gender
birthday: datetime.date
@app.post('/register')
async def register(user_info: Annotated[FormDataModel, Form()]):
h = hashlib.sha3_512(user_info.model_dump_json().encode('utf-8'))
return {'user_id': h.hexdigest(), 'sign': h.name, 'details': user_info.model_dump_json()}
关于表单参数
为什么需要 Form
- 兼容传统表单提交:在 Web 开发中,表单数据通常通过 application/x-www-form-urlencoded 或 multipart/form-data(用于文件上传)格式提交,这是 HTML 表单的标准提交方式,Form 参数专门用于处理这种类型的数据
- 简化客户端代码:对于不使用 JavaScript 或复杂前端框架的简单网页来说,直接从 HTML 表单提交数据到后端是非常直接和简单的使用 Form 可以直接接收这些数据,而无需在客户端进行任何额外的处理
- 安全性:Form 数据通常用于登录、注册等操作,这些操作可能需要 CSRF 保护许多 Web 框架提供了针对传统表单的 CSRF 保护机制
为什么不总是用 Body 替换 Form
- 内容类型不同:Body 通常用于处理 JSON 数据(application/json),这在现代 Web 应用中非常常见,特别是在单页面应用(SPA)和移动应用中而 Form 用于处理 application/x-www-form-urlencoded 或 multipart/form-data 数据
- 处理复杂性:虽然你可以通过 Body 接收原始数据并手动解析 application/x-www-form-urlencoded 或 multipart/form-data 数据,但这增加了处理的复杂性。使用 Form 可以让框架自动处理这些复杂性
- 前端适配:如果前端已经设计为发送 JSON 数据,使用 Body 是更自然的选择 如果是传统的 Web 表单,使用 Form 更为合适
本文标签: FastAPI后台开发基础(11) Form 表单数据使用
版权声明:本文标题:FastAPI后台开发基础(11): Form 表单数据使用 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1754637612a1704637.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论