在 FastAPI 中,你可以在查询参数中使用字符串校验器来确保参数符合指定的规则。这包括对字符串长度、正则表达式、字符串格式等方面的校验。以下是一个关于 FastAPI 查询参数和字符串校验的简单教程:

1. 创建 FastAPI 应用

确保你已经创建了一个 FastAPI 应用。可以使用以下代码创建一个简单的应用:
from fastapi import FastAPI

app = FastAPI()

2. 查询参数和字符串校验

在路由函数中,使用查询参数,并添加字符串校验器来限制参数的取值。
from fastapi import Query

@app.get("/items/")
async def read_item(query_param: str = Query(..., min_length=3, max_length=10, regex="^[a-zA-Z]+$")):
    return {"query_param": query_param}

在上述例子中,我们定义了一个名为 query_param 的查询参数,并使用 Query 类的参数进行了字符串校验。具体的校验条件包括:

  •  min_length=3:字符串长度最小为 3。

  •  max_length=10:字符串长度最大为 10。

  •  regex="^[a-zA-Z]+$":字符串必须匹配指定的正则表达式,只包含字母。


3. 测试查询参数

通过发送 GET 请求,并在 URL 中传递查询参数,来测试我们的路由。注意,在使用命令行工具时,需要使用引号将 URL 包裹起来。
curl -X GET "http://127.0.0.1:8000/items/?query_param=abc"

或者使用 httpie:
http GET http://127.0.0.1:8000/items/ query_param==abc

这将返回一个 JSON 响应:
{"query_param": "abc"}

4. 校验器的更多选项

除了上述示例中使用的校验条件外,Query 类还支持其他校验条件,例如:

  •  min_length 和 max_length:字符串长度的最小和最大值。

  •  regex:正则表达式匹配。

  •  enum:字符串必须是指定枚举值之一。

  •  title:用于生成文档中的参数标题。


你可以根据具体需求选择适当的校验条件。有关更多信息,请参阅 FastAPI 文档中关于查询参数和校验的章节。

总结

使用字符串校验器,你可以确保查询参数满足特定的条件,以及在文档中提供详细的参数信息。FastAPI 提供了丰富的校验器和选项,以满足各种校验需求。在 FastAPI 文档中可以找到更多关于查询参数和校验的详细信息和用法示例。


转载请注明出处:http://www.pingtaimeng.com/article/detail/7364/FastAPI