python - 如何根据 FastApi 中的另一个查询参数使查询参数成为必需的?

标签 python api

我想根据 FastApi 中的另一个查询参数创建一个必需的查询参数

例如我有四个查询参数:commandstart_dateend_dateincrement

如果 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/

相关文章:

Python 3.5.1 格式化 float 问题

python - tensorflow 中的 eval() 和 run()

python - 转到 python 字典中列表中的下一个索引并执行计算

api - 地理编码服务

python - 值错误: invalid literal for int() with base 10 on Alexnet

python - 即使有值,Matplotlib 绘图也显示为空白

c# - 查找非托管 dll API?

JAVA使用谷歌语音识别API

swift - 列出 SendBird 应用程序中可用的所有 channel

javascript - LinkedIn:Javascript token 并在服务器中验证用户