FastAPI ограничивает допустимые пути во время выполнения - PullRequest
0 голосов
/ 12 апреля 2020

Я знаю, что FastAPI может ограничивать допустимые имена путей с помощью класса , который наследуется от Enum, но это, похоже, означает, что я должен знать действительные имена путей во время разработки.

Но что, если я знаю только ограниченный список допустимых путей во время выполнения, используя функцию? И результаты этой функции могут периодически меняться. Я хочу ограничить запросы только этими путями, но так как в приведенном выше примере используется предварительно сформированное определение класса, а не экземпляр класса, я не вижу, как можно изменить действительный путь Enum во время выполнения.

Есть ли способ для ограничения имени пути для конечной точки, которая будет изменена во время выполнения?

1 Ответ

1 голос
/ 14 апреля 2020

Ну, все возможно, вы можете, например, скопировать значения в новый 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'])
...