【发布时间】:2022-01-03 22:07:43
【问题描述】:
我正在学习 testdriven.io 课程。
我发现通过添加 GET All users 路由不起作用,因为请求需要用户 ID。
在 users.py 文件中我有:
def get(self):
return User.query.all(), 200
和
def get(self, user_id):
...
然后有
api.add_resource(UsersList, '/users')
api.add_resource(UsersList, '/users/<int:user_id>')
似乎通过包含 '/users' 路由失败的 '/users/int:user_id' 路由:
src/tests/test_users.py::test_all_users - TypeError: get() missing 1 required positional argument: 'user_id'
如果我注释掉 api.add_resource(UsersList, '/users/int:user_id') 路由,那么所有用户路由都可以正常工作。
有没有办法让(所有用户和用户 ID 的用户)路由都工作?
我能在 Lumen 等其他框架中做类似的事情吗(PHP 所以可能遗漏了一些明显的东西。
谢谢
贾斯
【问题讨论】:
-
我想这可行:@api.marshal_with(user)。 def get(self, user_id=None): if user_id is None: return User.query.all(), 200 user= User.query.filter_by(id=user_id).first() if not user: api.abort(404 , f"用户 {user_id} 不存在")。返回用户,200
标签: python flask flask-restx