5мес



Программирование
+2Python FastApi. Почему когда я локально в docs, ввожу во вторую app.get ввожу имя, то срабатывает почему-то 1 функция
12345678910111213141516171819202122
@app.get(
path = "/users/{user_id}",
tags=["Поиск людей"],
summary="Показать данные о человеке по id"
)
def get_user_id(user_id: int):
for user in users:
if user["id"] == user_id:
return user
raise HTTPException(status_code=404, detail="Человек не найдена")
@app.get(
path = "/users/{user_name}",
tags=["Поиск людей"],
summary="Показать данные о человеке по имени"
)
def get_user_name(user_name: str):
for user in users:
if user["name"] == user_name:
return user
raise HTTPException(status_code=404, detail="Человек не найдена")

Когда я ввожу в поиск по имени id вместо имени, то работает.
А если имя то ошибка, пишет что надо int вместо строки
По дате
По рейтингу
Проблема в том, что оба маршрута используют одинаковый путь, и FastAPI всегда пытается применить первый (с int), поэтому при вводе строки происходит ошибка приведения типа—решение: разделить пути, например, использовать "/users/id/{user_id}" и "/users/name/{user_name}".