Параметры пути и их ограничения

В FastAPI у нас есть два основных варианта, как мы можем передать какое-то значение переменной внутрь нашей функции, которая соответствует этому роуту. Во-первых, это параметры пути, которые мы рассмотрели выше. Мы указываем их прямо здесь в строке в фигурных скобочках, потом дублируем соответственно их как аргумент этой функции, и все у нас работает.

Но у параметров пути есть некие ограничения. Во-первых, мы не сможем для них указать какое-то значение по умолчанию, которое будет принимать этот параметр пути. И мы не сможем сделать его необязательным.

Параметры запроса как альтернатива

Поэтому, если нам нужно устранить эти недостатки, мы можем воспользоваться вместо параметров пути так называемыми параметрами запроса. Чем они отличаются?

Параметры запроса, в отличие от параметра пути, отсутствуют внутри строки, которая соответствует адресу этого endpoint. Соответственно, для того чтобы добавить здесь этот параметр, например type, мы пишем просто его как аргумент к нашей функции и не указываем его в качестве пути. Вот он, наш type строка.

Смотрим, что произойдет теперь. В параметре пути, как вы видите, у нас нет этого параметра. Но при запросе к этой функции мы можем его передать вот таким образом, и здесь что-то мы можем указать и выполнить эту функцию.

Соответственно, просто как переменная, которая у нас будет, мы можем указывать более одной такой переменной параметра запроса. Обратите внимание, что каждый из этих параметров запроса является обязательным.

Если мы хотим сделать какой-то параметр запроса необязательным, мы можем написать здесь просто None. Как вы видите, теперь наш параметр запроса является необязательным. Также мы можем добавить какое-то значение по умолчанию, допустим "тест", для какого-то значения.

Как вы видите, здесь у нас идет значение по умолчанию "тест", и вот таким образом оно у нас используется. Вот такое отличие параметров пути от параметров запроса есть в FastAPI.