title: FastAPI 路径参数完全指南:从基础到高级校验实战
date: 2025/3/5
updated: 2025/3/5
author: cmdragon
excerpt:
探讨 FastAPI 路径参数的核心机制,涵盖从基础类型转换到高级校验的全方位知识。通过详细的代码示例、课后测验和常见错误解决方案,帮助初学者快速掌握 FastAPI 路径参数的使用技巧。您将学习到如何通过类型转换、正则表达式和自定义校验器来构建安全、高效的 API 接口。
categories:
tags:
扫描二维码关注或者微信搜一搜:编程智域 前端至全栈交流与成长
探索数千个预构建的 AI 应用,开启你的下一个伟大创意
路径参数是 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}
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 错误使用 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 错误错误:422 Validation Error
原因:路径参数类型转换失败或校验不通过
解决方案:检查路径参数的类型定义和校验规则。
通过正则表达式可以对路径参数进行更复杂的格式校验。
from fastapi import Path
@app.get("/credit-cards/{card_no}