将查询参数传递给 Flask 装饰器

2024-01-05

我正在为我的 Flask 服务器设置一个令牌身份验证系统,并且我希望能够设置一个装饰器,如下所示:

@app.route('/my/data/')
@requires_token_auth
def get_my_endpoint_data():
    """Return JSON data""""
    return get_data()

然后我将到达 /my/data?token=myawesometokenvalue 等端点

我已经将装饰器功能设置为

def requires_token_auth(f):
    @wraps(f)
    def wrapped(*args, **kwargs):
        ... do stuff ...
        return f(*args, **kwargs)
return wrapped

不幸的是,“token”参数在 args 内部不可用。问题似乎是 Flask 传递了 req.view_args,而不是 req.args。

*来自flask的app.py *

1344         return self.view_functions[rule.endpoint](**req.view_args)

如何从包装函数内部访问查询参数?


由于这是“flask 查询参数装饰器”的第一个谷歌结果,因此这是我最终在方法中的路径参数之上添加查询参数的解决方案:

def query_params(f):
    """
    Decorator that will read the query parameters for the request.
    The names are the names that are mapped in the function.
    """
    parameter_names = inspect.getargspec(f).args

    @wraps(f)
    def logic(*args, **kw):
        params = dict(kw)

        for parameter_name in parameter_names:
            if parameter_name in request.args:
                params[parameter_name] = request.args.get(parameter_name)

        return f(**params)

    return logic

@app.route('/hello/<uid>', methods=['GET', 'POST'])
@query_params
def hello_world(uid, name):
    return jsonify({
        'uid': uid,
        'name': name
    })
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将查询参数传递给 Flask 装饰器 的相关文章

随机推荐

  • java将数据写入Excel工作表

    我有 3 个列表 即 list1 list2 和 list3 我想在 Excel 工作表中将这些列表显示为 3 列 例如 列表 1 中的值应显示在 Excel 工作表的第一列中 我将所有 3 个列表添加到最终列表中 如下所示 并且能够将它们
  • 实例化对象时 ASP5/MVC6 中的 DllNotFoundException(使用 WorkItemStore 类)

    我正在尝试实例化工作项存储 https msdn microsoft com en us library microsoft teamfoundation workitemtracking client workitemstore v vs
  • Docker容器运行时的环境变量文件

    我有一个 docker 映像 它基本上按照使用下面构建映像时定义的频率安排 cron 作业 COPY myjobtime etc cron d myjobtime RUN chmod 0644 etc cron d myjobtime cr
  • 如何从控制器内部获取 Symfony2 中 Web 目录的服务器路径?

    问题如下 如何从控制器内部 或因此从其他任何地方 获取 Symfony2 中 Web 目录的服务器路径 我已经发现了什么 也通过在这里搜索 关于 Doctrine 文件处理的食谱文章中建议了这一点 path DIR web 通过搜索发现 只
  • 我可以使用 PHP 提供 MP3 文件吗?

    就像可以使用 php 提供图像以用于验证码等一样 是否可以对音频文件执行相同的操作 我试过这个
  • 使用Python从网页中提取图像链接

    所以我想获取此页面上的所有照片 nba 球队的照片 http www cbssports com nba draft mock draft http www cbssports com nba draft mock draft 然而 我的代
  • Android 如何等待服务实际连接?

    我有一个活动调用 IDownloaderService aidl 中定义的服务 public class Downloader extends Activity IDownloaderService downloader null 在 Do
  • 如何绘制许多不均匀分布的 value_counts

    假设我有以下数据 s2 pd Series 1 2 3 4 5 2 3 333 2 123 434 1 2 3 1 11 11 432 3 2 4 3 3 3 54 34 24 2 223 2535334 3 1 1 0 0 0 0 0 0
  • Ionic PWA 从 config.xml 获取版本号

    我想在 Ionic PWA 中显示 config xml 中的版本号 使用 ionic 本机应用程序版本插件可以轻松完成 ios android 构建 但是 PWA 构建的好方法是什么 npm run build release prod
  • 无法读取实例数据,放弃 python boto 中的错误

    我正在尝试使用 boto 库访问亚马逊 s3 以访问亚马逊 aws publicdatasets 中可用的常见爬网数据 我在 boto 中创建了访问配置文件 Credentials aws access key id my key aws
  • Codeigniter:按日期升序排序

    您好 这是我用于订购和获取数据的模型代码 this gt db gt order by oBy asc query this gt db gt get books 一切工作正常 但是在我的数据库中 我将日期存储为字符串 例如2014 年 1
  • 如何编辑和调试 R 库源

    我在 R 脚本中包含了一个名为 blotter 的库 该库中有一个错误 有没有一种简单的方法可以让我编辑源代码来尝试调试问题 查找trace and browser函数 它们是R中调试的基本工具 假设您要编辑函数的源代码foo 然后说 tr
  • .NET API 更新包括 ID

    我有 Ruby on Rails API 背景 但目前正在开发 NET C WebAPI 我熟悉 C 和 NET Webform 我正在尝试设置一个 PUT 请求来更新数据库中的记录 脚手架方法会覆盖所有字段 而我只想更新通过 PUT 传递
  • 音译/转置 NSString 中的字符

    我想将西里尔字符串音译为最接近的拉丁字符串 例如 gt matreshka gt 伏特加 因此 理想情况下 我希望在 NSString 或其他地方有一些现成的方法 这些方法已经了解有关字母表的所有内容并且可以进行对话 但如果 iOS API
  • 在 x64 Windows 中,有没有办法运行 Runtime.exec() 进程以避免“注册表重定向”

    我们的应用程序在 jvm 32 位中运行 即使在 Windows x64 中也是如此 现在 在某些时候 我需要访问一些注册表值 例如 HKEY LOCAL MACHINE SOFTWARE mycomp 我通过执行来做到这一点 cmd C
  • 如何使用SQL和VBA从Access表中获取多个小计?

    我正在尝试使用 Windows 中的外部 vbs 文件 vbscript 从 Access Table 获取多个小计 mySQL SELECT Data Time Quantity Sum Data Price AS SumOfPrice
  • php shell_exec($cmd) 不在 cronjob 中运行

    很抱歉 我相信 这个问题很糟糕 但是谷歌和这个论坛中的其他文章无法帮助我 我将运行一个 php 脚本 其中包含以下代码 cmd duck u user name p pwd parallel 1 e overwrite y throttle
  • 如何查询数据库字段但忽略 HTML 标记?

    我们有一个包含用于在网站上格式化的 HTML 标记的字段 但我们只需要查询应在屏幕上呈现的文本 而不是 CSS 标签 标签名称 属性名称等内容 有没有办法忽略 SQL 查询或存储过程中的标记 如果有办法做到这一点 我们以后会遇到性能问题吗
  • 如何更改UIWebView中的字符编码?

    问题总结 在 iOS 上浏览非英文网站时 如果没有使用 UIWebView 明确指定正确的字符编码 则页面无法正确显示 详细解释 As the loadRequest UIWebView 中的方法将使用从 Web 服务器发送的字符集标头中指
  • 将查询参数传递给 Flask 装饰器

    我正在为我的 Flask 服务器设置一个令牌身份验证系统 并且我希望能够设置一个装饰器 如下所示 app route my data requires token auth def get my endpoint data Return J