【问题标题】:How to get the content length of a GET request in flask如何在烧瓶中获取 GET 请求的内容长度
【发布时间】:2017-05-23 20:02:35
【问题描述】:

我正在尝试编写一些包装函数,它首先检查请求的大小,如果请求大小大于我的预期,则特定内容将返回给客户端。我之前尝试使用request.content_length,当请求是POST 请求时它可以工作,但不能用于GET 请求。有没有办法做到这一点?

【问题讨论】:

  • 您使用的是什么版本的 Python、Flask 和 Werkzeug?你用什么在 GET 请求中发送数据?

标签: flask get request


【解决方案1】:

Flask 请求继承自 werkzeug 请求:http://werkzeug.pocoo.org/docs/0.12/quickstart/#enter-request。所以 Flask 中请求的内容长度在它的 headers 中:flask.request.headers.get('Content-Length')

所以你可以做类似的事情


import functools


def check_content_length_of_request_decorator(max_content_length):
    def wrapper(fn):
        @functools.wraps(fn)
        def decorated_view(*args, **kwargs):
            if int(flask.request.headers.get('Content-Length') or 0) > max_content_length:
                return flask.abort(400, description='Too much content in request')
            else:
                return fn(*args, **kwargs)
        return decorated_view
    return wrapper


@app.route('/my_route', methods=['GET', 'POST'])
@check_content_length_of_request_decorator(1000)
def my_route():
    return 'This request has a valid content length!'

【讨论】:

    猜你喜欢
    • 2021-07-31
    • 2014-07-23
    • 2020-08-24
    • 1970-01-01
    • 2021-12-30
    • 2022-01-25
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多