首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >testdriven.io:使用FastAPI和Docker的测试驱动开发:获取不一起工作的路由

testdriven.io:使用FastAPI和Docker的测试驱动开发:获取不一起工作的路由
EN

Stack Overflow用户
提问于 2022-01-03 22:07:43
回答 1查看 280关注 0票数 0

我正在学习testdriven.io课程。

我发现,通过添加GET所有用户,路由不能正常工作,因为请求需要一个userid。

在users.py文件中有:

代码语言:javascript
复制
    def get(self):  
        return User.query.all(), 200

代码语言:javascript
复制
def get(self, user_id):  
     ...  

然后就有了

代码语言:javascript
复制
api.add_resource(UsersList, '/users')  
代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2022-01-03 23:02:39

我认为这可能是答案,但我希望能够添加多个GET函数来分离代码。

这是:

在同一方法中同时处理/users和users/id路由。是否可能同时拥有GET函数和分离逻辑/代码。

代码语言:javascript
复制
    @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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70571980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档