Decorator将参数作为KWARGS传递,但需要flask API端点中的位置参数

2024-07-03 07:14:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个具有许多端点的flask应用程序,我计划编写一个decorator来记录api端点的操作。在

例如,我有一个端点来删除API调用http://localhost:5000/api/owners/123/delete的条目,如下所示

@route('/owners/<ownerid>/delete',methods=['DELETE'])
def deleteOwner(ownerid):
     if request.method == 'DELETE':
         """ delete action """
         return jsonify({})

现在我想向这个调用添加一个decorator,以便它记录用户操作。所以我试着用下面的装饰师

^{pr2}$

现在装饰如下

@route('/owners/<ownerid>/delete',methods=['DELETE'])
@logtrail
def deleteOwner(ownerid):
     if request.method == 'DELETE':
         """ delete action """
         return jsonify({})

当我用@logtrail修饰我的原始API方法时,我需要作为位置参数的“ownerid”作为{“ownerid”:“123”}传递给decorator函数。在

我是新来的装修师,需要一些帮助如何处理这一点。在


Tags: apiifrequestdef记录decorator端点delete
1条回答
网友
1楼 · 发布于 2024-07-03 07:14:58

这个问题与python上如何传递变量/参数有关。 要修复它,只需将return func(kwargs)更改为return func(**kwargs),这样kwargs将作为关键字而不是dict来传递

def logtrail(func):
    def wrap(*args, **kwargs):
        print args
        print kwargs.values()  #This prints {"ownerid":"123"}
        return func(**kwargs)
    return wrap

相关问题 更多 >