我正在学习testdriven.io课程。
我发现,通过添加GET所有用户,路由不能正常工作,因为请求需要一个userid。
在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>') 似乎通过包含‘/user/int:user_id’路由而‘/user’路由失败的方式:
src/test/test_users.py::test_all_users TypeError: get()缺少一个必需的位置参数:'user_id‘
如果我注释掉api.add_resource(‘/UsersList/int:user_id’)路由,那么所有用户路由都能正常工作。
是否有一种方法可以同时允许(所有用户和用户通过用户Is )路由工作?
我是否能够在其他框架(如Lumen (PHP ))中做类似的工作,因此可能遗漏了一些显而易见的东西。
谢谢
Jas
发布于 2022-01-03 23:02:39
我认为这可能是答案,但我希望能够添加多个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, 200https://stackoverflow.com/questions/70571980
复制相似问题