FastAPI 在 运行 时间限制有效路径名

FastAPI restrict valid path names at run time

我知道 FastAPI 可以 restrict valid path names using a class 从 Enum 继承,但这似乎意味着我必须在设计时知道有效的路径名。

但是如果我只知道 运行 时间的有效路径限制列表,使用函数怎么办?该功能的结果可能会定期更改。我只想将查询限制为那些路径名,但由于上面使用了预制的 class 定义,而不是 class 的实例,我不知道如何更改有效路径 Enum在 运行 时间。

有没有办法在 运行 时更改端点的路径名限制?

嗯,一切皆有可能,例如,您可以将值复制到一个新的枚举中。这不是很漂亮,但是如果您确保全局重新分配 ModelName,文档生成器应该会进行更改

def new_enum(current_enum, names: List[str]):
    values = names

    for item in current_enum:
        names.append(item.name)
        values.append(item.value)

    return enum.Enum(current_enum.__name__, dict(zip(names, values)))


class ModelName(str, Enum):
    alexnet = "alexnet"
    resnet = "resnet"
    lenet = "lenet"


ModelName = new_enum(ModelName, ['foo', 'bar'])