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

在FastAPI中使用Form()函数处理表单数据

发布时间:2023-12-15 22:58:03

在FastAPI中,可以使用Form()函数来处理表单数据。Form()函数是FastAPI提供的一个参数解析器,用于解析通过表单提交的数据。

下面是一个使用Form()函数处理表单数据的例子:

from fastapi import FastAPI, Form

app = FastAPI()

@app.post("/login")
async def login(username: str = Form(...), password: str = Form(...)):
    return {"username": username, "password": password}

在上面的例子中,我们创建了一个名为/login的POST请求路由。通过Form(...)函数,我们定义了两个参数usernamepassword,并指定它们为必须项。

当客户端发送一个POST请求到/login路由时,FastAPI会自动解析请求中的表单数据,并将它们作为参数传递给login函数。在login函数中,我们可以直接使用usernamepassword这两个参数来获取表单提交的数据。

使用curl发送一个POST请求到/login路由,提交表单数据:

$ curl -X POST "http://localhost:8000/login" -d "username=admin&password=123456"

FastAPI会自动将请求中的usernamepassword参数解析出来,然后返回一个包含这两个参数值的JSON响应:

{
    "username": "admin",
    "password": "123456"
}

除了使用...指定某个参数为必须项之外,还可以通过设置参数的默认值来指定某个参数为可选项。下面是一个使用Form()函数处理可选参数的例子:

from fastapi import FastAPI, Form, HTTPException

app = FastAPI()

@app.post("/register")
async def register(username: str = Form(default=None), password: str = Form(default=None)):
    if username is None or password is None:
        raise HTTPException(status_code=400, detail="Missing username or password")
    else:
        return {"username": username, "password": password}

在上面的例子中,我们创建了一个名为/register的POST请求路由,并且定义了两个可选参数usernamepassword。当usernamepassword参数的值为None时,我们手动抛出一个HTTP异常(400 Bad Request)来表示缺少usernamepassword参数。

使用curl发送一个POST请求到/register路由,提交表单数据:

$ curl -X POST "http://localhost:8000/register" -d "username=admin&password=123456"

FastAPI将会解析请求中的usernamepassword参数,并返回一个包含这两个参数值的JSON响应:

{
    "username": "admin",
    "password": "123456"
}

如果请求中缺少usernamepassword参数,FastAPI会返回一个包含错误信息的JSON响应,并设置HTTP状态码为400:

{
    "detail": "Missing username or password"
}

在FastAPI中,使用Form()函数处理表单数据非常方便,它能够自动解析表单数据并将其转换为对应的参数类型。同时,通过设置参数的默认值和使用...可以轻松地定义必须项和可选项,提高代码的可读性和可维护性。