testdriven.io:使用FastAPI和Docker进行测试驱动开发:获取无法协同工作的路由



我正在学习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

相关内容

  • 没有找到相关文章

最新更新