Параметры запроса
Параметр запроса — это пара ключ-значение, предоставляемая после окончания URL- адреса конечной точки, обозначенного вопросительным знаком (?). Как и параметр пути, он также содержит данные запроса. Служба API может управлять рядом параметров запроса, разделенных амперсандом (&). Как и в параметрах пути, все параметры запроса также объявляются в методе службы.
Напишем новую функцию в наше приложение, использующее параметры запроса:
from fastapi import FastAPI
app = FastAPI()
@app.get("/user")
async def login(username: str, age: int) -> dict:
return {"user": username, "age": age}
Функция login получает username в качестве параметра запроса типа str и age в качестве параметра запроса типа int. Посмотрим на блок-схему, чтобы еще раз разобраться как будет работать данный код.
Мы можем перейти по адресу http://127.0.0.1:8000/user?username=Ilya&age=33 и посмотреть результат:
Также мы можем комбинировать, получая параметры пути и параметры запроса. Причем имея в части URL-адреса фиксированные пути. Несмотря на то, что параметры пути предшествуют параметрам запроса в URL-адресе, нет необходимости следовать порядку при их объявлении в определении функции.
from fastapi import FastAPI
app = FastAPI()
@app.get("/employee/{name}/company/{company}")
async def get_employee(name: str, department: str, company: str) -> dict:
return {"Employee": name, "Company": company, "Department": department}
Теперь мы можем перейти по адресу http://127.0.0.1:8000/employee/Ilya/company/stepik?department=it и посмотреть результат:
Мы видим, что независимо от объявления параметров в функции get_employee(), URL-адрес обрабатывается правильно, изначально идут параметры пути, и после идут параметры запроса.