在FastAPI中,处理逗号分隔的Query参数可以通过多种方式实现。以下是几种常见的方法:
List
类型和Query
函数你可以使用List
类型和Query
函数来处理逗号分隔的Query参数。FastAPI会自动将逗号分隔的字符串转换为列表。
from typing import List
from fastapi import FastAPI, Query
app = FastAPI()
@app.get("/items/")
async def read_items(q: List[str] = Query(None)):
return {"q": q}
在这个例子中,如果你访问/items/?q=foo,bar,baz
,FastAPI会将q
参数解析为["foo", "bar", "baz"]
。
如果你需要更多的控制权,可以手动解析逗号分隔的字符串。例如:
from fastapi import FastAPI, Query
app = FastAPI()
@app.get("/items/")
async def read_items(q: str = Query(None)):
if q:
items = q.split(",")
else:
items = []
return {"q": items}
在这个例子中,q
参数是一个字符串,你可以使用split(",")
方法将其分割成列表。
如果你需要更复杂的解析逻辑,可以创建一个自定义的解析器函数。
from fastapi import FastAPI, Query
app = FastAPI()
def parse_comma_separated_list(q: str):
return q.split(",") if q else []
@app.get("/items/")
async def read_items(q: str = Query(None)):
items = parse_comma_separated_list(q)
return {"q": items}
在这个例子中,parse_comma_separated_list
函数负责将逗号分隔的字符串解析为列表。
Depends
依赖注入你还可以使用Depends
来注入一个依赖函数,该函数负责解析Query参数。
from typing import List
from fastapi import FastAPI, Query, Depends
app = FastAPI()
def get_items(q: str = Query(None)):
return q.split(",") if q else []
@app.get("/items/")
async def read_items(items: List[str] = Depends(get_items)):
return {"q": items}
在这个例子中,get_items
函数被注入到read_items
路由中,负责解析q
参数。
FastAPI提供了多种灵活的方式来处理逗号分隔的Query参数。你可以根据具体需求选择最适合的方法。通常情况下,使用List
类型和Query
函数是最简单和直接的方式。