title: FastAPI 路径参数完全指南:从基础到高级校验实战 🚀
date: 2025/3/5
updated: 2025/3/5
author: cmdragon
excerpt:
探讨 FastAPI 路径参数的核心机制,涵盖从基础类型转换到高级校验的全方位知识。通过详细的代码示例、课后测验和常见错误解决方案,帮助初学者快速掌握 FastAPI 路径参数的使用技巧。您将学习到如何通过类型转换、正则表达式和自定义校验器来构建安全、高效的 API 接口。
categories:
- 后端开发
- FastAPI
tags:
- FastAPI
- 路径参数
- 类型转换
- 参数校验
- 正则表达式
- API安全
- RESTful
扫描二维码关注或者微信搜一搜:编程智域 前端至全栈交流与成长
第一章:路径参数基础
1.1 什么是路径参数?
路径参数是 RESTful API 中用于标识资源的变量,通常出现在 URL 路径中。例如,/users/{user_id}
中的 user_id
就是一个路径参数。
from fastapi import FastAPI
app = FastAPI()
@app.get("/users/{user_id}")
async def get_user(user_id: int):
return {
"user_id": user_id}
1.2 类型转换
FastAPI 会自动将路径参数转换为指定的类型。如果转换失败,将返回 422 错误。
@app.get("/items/{item_id}")
async def get_item(item_id: int):
return {
"item_id": item_id}
示例请求:
- 合法:
/items/123
→{"item_id": 123}
- 非法:
/items/abc
→ 422 错误
1.3 基础校验
使用 Pydantic 的 Field
或 conint
等工具可以对路径参数进行基础校验。
from pydantic import conint
@app.get("/products/{product_id}")
async def get_product(product_id: conint(gt=1000)):
return {
"product_id": product_id}
示例请求:
- 合法:
/products/1001
→{"product_id": 1001}
- 非法:
/products/999
→ 422 错误
1.4 常见错误与解决方案
错误:422 Validation Error
原因:路径参数类型转换失败或校验不通过
解决方案:检查路径参数的类型定义和校验规则。
第二章:高级校验技巧
2.1 正则表达式校验
通过正则表达式可以对路径参数进行更复杂的格式校验。
from fastapi import Path
@app.get("/credit-cards/{card_no}