在FastAPI中使用Form()函数处理表单数据
在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(...)函数,我们定义了两个参数username和password,并指定它们为必须项。
当客户端发送一个POST请求到/login路由时,FastAPI会自动解析请求中的表单数据,并将它们作为参数传递给login函数。在login函数中,我们可以直接使用username和password这两个参数来获取表单提交的数据。
使用curl发送一个POST请求到/login路由,提交表单数据:
$ curl -X POST "http://localhost:8000/login" -d "username=admin&password=123456"
FastAPI会自动将请求中的username和password参数解析出来,然后返回一个包含这两个参数值的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请求路由,并且定义了两个可选参数username和password。当username或password参数的值为None时,我们手动抛出一个HTTP异常(400 Bad Request)来表示缺少username或password参数。
使用curl发送一个POST请求到/register路由,提交表单数据:
$ curl -X POST "http://localhost:8000/register" -d "username=admin&password=123456"
FastAPI将会解析请求中的username和password参数,并返回一个包含这两个参数值的JSON响应:
{
"username": "admin",
"password": "123456"
}
如果请求中缺少username或password参数,FastAPI会返回一个包含错误信息的JSON响应,并设置HTTP状态码为400:
{
"detail": "Missing username or password"
}
在FastAPI中,使用Form()函数处理表单数据非常方便,它能够自动解析表单数据并将其转换为对应的参数类型。同时,通过设置参数的默认值和使用...可以轻松地定义必须项和可选项,提高代码的可读性和可维护性。
