我正在学习testdriven.io课程。
我发现,通过添加GET All users路由并不能像请求所期望的那样工作。
在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/int:user_id"路由,"/users"路由失败了:
src/tests/test_users.py::test_all_users-TypeError:get((缺少1个必需的位置参数:"user_id">
如果我注释掉api.add_resource(UsersList,'/users/int:user_id'(路由,那么所有用户路由都可以正常工作。
有没有一种方法可以同时允许(所有用户和user-by-userid(路由工作?
我能在Lumen(PHP(等其他框架中做类似的事情吗
感谢
Jas
我认为这可能是答案,但我希望能够添加多个GET函数来分离代码。
此:
以相同的方法处理/users和users/id路由。是否可以同时具有GET函数并分离逻辑/代码。
@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 {user_id} does not exist")
return user, 200