欢迎访问宙启技术站
智能推送

在FastAPI中使用Form()函数实现表单数据传输和验证

发布时间:2023-12-15 23:05:04

在FastAPI中,可以使用Form()函数来实现表单数据的传输和验证。Form()函数与FastAPI的Form类配合使用,可以轻松地实现数据的传输和验证。

Form()函数的用法与FastAPI的Query()函数类似,可以接受多个参数,用于指定字段的名称、类型和其他验证规则。在处理表单数据时,Form()函数可以根据指定的字段和类型来自动将数据转换为相应的类型,并进行相应的验证。

下面是一个使用Form()函数实现表单数据传输和验证的示例:

from fastapi import FastAPI, Form
from pydantic import BaseModel

app = FastAPI()


class User(BaseModel):
    name: str
    age: int


@app.post("/users/")
async def create_user(user: User):
    # 使用Form()函数传输和验证表单数据
    return {"user": user}


@app.post("/login/")
async def login(username: str = Form(...), password: str = Form(...)):
    # 使用Form()函数传输和验证表单数据
    return {"username": username, "password": password}

在上面的示例中,我们定义了两个路由函数,分别用于创建用户和登录。在创建用户的路由函数中,我们使用User模型来定义用户的字段和类型,在处理请求时,FastAPI会使用Form()函数将表单数据转换为User模型的实例,并进行相应的验证。

在登录的路由函数中,我们使用Form()函数来定义用户名和密码的字段和类型,并传递...作为默认值。这样,当请求中没有提供相应的表单字段时,会触发HTTP错误响应,提示缺少必需的表单字段。

需要注意的是,当使用Form()函数时,需要在路由函数的参数中显式声明参数类型,以便FastAPI能够正确解析和验证请求数据。

使用示例:

创建用户:

发送POST请求到/users/,并在请求体中提供用户名和年龄字段,例如:

{
  "name": "John",
  "age": 30
}

登录:

发送POST请求到/login/,并在请求体中提供用户名和密码字段,例如:

{
  "username": "john_doe",
  "password": "secret"
}

以上就是在FastAPI中使用Form()函数实现表单数据传输和验证的方法和示例。通过使用Form()函数,我们可以轻松地处理表单数据,并进行相应的验证,从而确保接口的安全性和可靠性。