【问题标题】:Flask Restul default parameterFlask Restful 默认参数
【发布时间】:2021-03-26 13:56:00
【问题描述】:

我正在尝试为我的烧瓶 restful api 指定一个可选参数。

我定义了以下路线,其中模式是可选的。

我的路线是这样定义的

api.add_resource(TestController, "/test/<id>/<mode>")

我的控制器是这样定义的:


class TestController(Resource):
    def get(
        self,
        id: int,
        mode: int = -1,
    ):

我读过一种方法是这样的

api.add_resource(TestController, "/test/<id>/")
api.add_resource(TestController, "/test/<id>/<mode>")

但这对我来说会导致错误并给我: AssertionError: View function mapping is overwriting an existing endpoint function: loggers

【问题讨论】:

    标签: flask flask-restful


    【解决方案1】:

    这里有几点我要修改。

    1. 从第一个声明中删除尾随 /:

      api.add_resource(TestController, "/test/")

    2. 将预期类型添加到 get 参数,例如:

      api.add_resource(TestController, "/test/int:id") api.add_resource(TestController, "/test/int:id/int:mode")

    3. 我不会将两条不同的路线与同一个类相关联。

    类TestController1(资源): 定义得到( 自己, 编号:整数, ):

    类TestController2(资源): 定义得到( 自己, 编号:整数, 模式:int = -1 ):

    然后相应地改变你的路线。

    如果你必须这样做,那么最好把路由写成这样:

    api.add_resource(TestController, "/test/<int:id>", "/test/<int:id>/<int:mode>")
    

    This stackoverflow post 可能有用

    【讨论】:

      猜你喜欢
      • 2014-09-25
      • 1970-01-01
      • 2018-09-01
      • 1970-01-01
      • 2019-12-14
      • 1970-01-01
      • 1970-01-01
      • 2015-08-10
      • 2019-05-04
      相关资源
      最近更新 更多