news 2026/5/11 18:33:15

fastapi2

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
fastapi2

我们继续用费曼学习法,从基础用法进阶到生产环境高频使用的FastAPI核心能力,全程保持「大白话类比→概念拆解→可直接运行的完整代码→一步到位的验证方式」的节奏,所有代码都可以直接复制到之前的main.py中运行,无需额外复杂配置。


一、进阶参数校验:给你的接口加“严格安检”

大白话类比

之前我们只是检查客人提交的东西“是不是数字/字符串”(基础类型校验),现在我们要升级安检规则:

  • 手机号必须是11位合规格式
  • 用户名不能少于2位、不能超过20位
  • 商品价格不能是负数
  • 密码必须符合安全规范

FastAPI 提供了Query(查询参数校验)、Path(路径参数校验),配合 Pydantic 的Field(请求体字段校验),可以实现任意粒度的参数规则校验,所有规则还会自动同步到API文档里,无需手动编写。

核心概念解释

  • Path:专门给路径参数加校验规则,比如限制数字范围、必填约束、文档描述
  • Query:专门给查询参数加校验规则,比如限制字符串长度、正则匹配、是否必填
  • Field:给Pydantic模型(请求体/响应体)的字段加校验规则,用法和上述两个完全一致

可执行代码

fromfastapiimportFastAPI,Path,QueryfrompydanticimportBaseModel,Field# Field 用于请求体字段校验app=FastAPI()# 1. 路径参数进阶校验@app.get("/items/{item_id}")asyncdefread_item(# Path:路径参数item_id,必须大于等于1、小于等于100,规则自动同步到文档item_id:int=Path(title="物品ID",ge=1,le=100,description="物品的唯一ID,合法范围1-100")):return{"item_id":item_id,"message":"路径参数校验通过"}# 2. 查询参数进阶校验@app.get("/users/")asyncdefread_users(# Query:用户名必填,长度2-20位;年龄可选,18-100岁;手机号必须符合正则username:str=Query(min_length=2,max_length=20,description="用户名,2-20位字符"),age:int|None=Query(default=None,ge=18,le=100,description="年龄,合法范围18-100岁"),phone:str|None=Query(default=None,regex=r"^1[3-9]\d{9}$",description="11位国内手机号")):return{"username":username,"age":age,"phone":phone,"message":"查询参数校验通过"}# 3. 请求体字段进阶校验(Field)classUserCreate(BaseModel):username:str=Field(min_length=2,max_length=20,description="用户名")password:str=Field(min_length=8,description="密码至少8位")age:int=Field(ge=18,le=100,description="年龄18-100岁")email:str=Field(regex=r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$",description="合法邮箱地址")@app.post("/users/")asyncdefcreate_user(user:UserCreate):# exclude={"password"} :返回结果中排除密码字段,避免敏感信息泄露return{"message":"用户创建成功","user":user.dict(exclude={"password"})}

验证方式

  1. 运行服务:uvicorn main:app --reload,打开交互式文档http://127.0.0.1:8000/docs
  2. 测试/items/{item_id}
    • 输入item_id=0101,会直接返回422校验错
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 1:46:23

114.二叉树展开为链表

package org.example;import java.util.ArrayList; import java.util.Collections; import java.util.List;class Solution {public void flatten(TreeNode root) {// 前序遍历二叉树List<TreeNode> traversal preorderTraversal(root);// 修改结点的 left 域和 right 域…

作者头像 李华
网站建设 2026/4/15 1:46:19

探秘Java微服务:短视频社交源码问答圈全解析

短视频社交源码的“暗坑”&#xff1a;90%创业者栽过的技术雷区最近跟几个做社交产品的朋友聊天&#xff0c;发现大家都在吐槽同一个问题&#xff1a;“明明想做个短视频问答的社区&#xff0c;结果源码买回来不是卡顿就是崩溃&#xff0c;用户量刚到1万就撑不住了&#xff01;…

作者头像 李华
网站建设 2026/4/15 1:43:28

WMS 仓库管理系统核心功能模块全景图

该内容来自与AI的沟通&#xff0c;因为最近在参与人防门的项目&#xff0c;所以内容适配人防门行业。&#xff08;一&#xff09;基础数据管理模块&#xff08;系统基石&#xff09;物料主数据&#xff1a;管理钢板、型钢、密闭胶条、人防锁具等物料信息&#xff0c;支持批次 /…

作者头像 李华
网站建设 2026/4/15 1:36:03

前端表单处理新方法:别再用传统表单了

前端表单处理新方法&#xff1a;别再用传统表单了 什么是前端表单处理新方法&#xff1f; 前端表单处理新方法是指在前端开发中&#xff0c;随着技术的发展&#xff0c;出现的新的表单处理技术和方法。别以为表单处理只是获取输入值&#xff0c;那是十年前的玩法了。 为什么需要…

作者头像 李华
网站建设 2026/4/15 1:34:41

AAAI认证! Transformer+多模态融合2026仍是王炸,持续狂揽顶会

最近回顾了多模态相关的研究&#xff0c;这领域实在太火了&#xff0c;如果还想快速上手、快速出成果&#xff0c;那我推荐做Transformer多模态融合&#xff0c;这是目前对新手最友好的热点方向之一。至于具体方向和创新点&#xff1f;根据发展趋势和最近的成果来看&#xff0c…

作者头像 李华
网站建设 2026/4/15 1:21:10

Linux系统移植

个人学习记录STM32MP157开发板&#xff0c;它是A7核M4核的系统移植&#xff1a;通过TF卡移植步骤&#xff1a;1.Ubuntu识别TF卡1.1TF插入读卡器&#xff0c;再装在电脑上&#xff0c;选择连接位置为虚拟机.2找到TF在系统中的位置ls /dev/sdUbuntu中磁盘类设备 也叫块设备 , 都…

作者头像 李华