我想根据 FastApi 中的另一个查询参数创建一个必需的查询参数
例如我有四个查询参数:command
、start_date
、end_date
和increment
如果 command
等于“analyse”,则 end_date
必须是必需的。但是,如果 command
等于“add_working_days”,则不需要 end_date
但需要 increment
。这可能吗?
这是我现在的代码:
import datetime
from fastapi import FastAPI, Query
app = FastAPI()
@app.get("/api/")
async def read_item(
start_date: str = Query(..., regex=r"[\d]{4}-[\d]{1,2}-[\d]{1,2}"),
end_date: str = Query(..., regex=r"[\d]{4}-[\d]{1,2}-[\d]{1,2}"),
command: str = None,
increment: int = None,
):
parsed_start_date = datetime.datetime.strptime(start_date, "%Y-%m-%d")
parsed_end_date = datetime.datetime.strptime(end_date, "%Y-%m-%d")
duration = parsed_end_date - parsed_start_date
return duration.days
最佳答案
我建议分离你的 api
import datetime
from fastapi import FastAPI, Query
app = FastAPI()
@app.get("/api/analyse")
async def read_item_for_analyse(
start_date: str = Query(..., regex=r"[\d]{4}-[\d]{1,2}-[\d]{1,2}"),
end_date: str = Query(..., regex=r"[\d]{4}-[\d]{1,2}-[\d]{1,2}"),
increment: int = None,
):
# do something
@app.get("/api/add_working_days")
async def read_item_for_add_working_days(
start_date: str = Query(..., regex=r"[\d]{4}-[\d]{1,2}-[\d]{1,2}"),
end_date: str = None,
increment: int = Query(..., title="Increase working days"),
):
# do something
它清晰易懂,或者继续你的风格并添加一些“if...else”就足够了。
关于python - 如何根据 FastApi 中的另一个查询参数使查询参数成为必需的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55555715/