FastApi 未输出用户。我试图获取数据库表 Users 中的所有用户。但是,每当我尝试使用 swagger 时,我都会得到“null”。我已经检查了我的表是否已填充,如下所示:
sqlite> SELECT * FROM users;
1|creator|creator|creator|creator|$2b$12$.RvErMYWQ7buaWKh7l6JGeCxGtiX7D9z5zHLHxib61J4oJF/XWjP.|2024-12-06T21:27:27.678917
2|tim|[email protected]|Tim|Try|$2b$12$3.8B78wv33qEQihcSBGak./7afLxCX2dPnEnTR/mf.npLRJ9ZCNEG|2024-12-06T23:15:35.844103
我有这两个获取端点,第一个用于获取一个用户的信息的端点工作正常,但第二个端点却给我 null:
@router.get("/{username}")
def get_user(db: db_dependency, username: str):
# SELECT * FROM Users WHERE user_id = user_id
user = db.query(Users).filter(Users.username == username).first()
return user
@router.get("/all")
def get_users(db: db_dependency):
# SELECT * FROM Users
users = db.query(Users).all()
return users
我认为这可能与 .all() 有关,但不同文件中的另一个端点运行良好:
@router.get("/coffee-shops/all"):
def get_all_coffee_shops(db: db_dependency):
# SELECT * FROM coffee_shops_table
return db.query(CoffeeShops).all()
我真的不明白发生了什么。有什么想法吗?
问题在于您如何定义端点。由于之前
/{username}
已定义,您的请求被第一个端点捕获,因此您的应用正在尝试查找用户名为“all”的用户。有两种方法可以解决这个问题:/all
/all
上方/{username}
。/users
返回所有用户,并/users/{username}
返回单个用户。