我正在尝试编写一些包装函数,该函数首先检查请求的大小,如果请求大小大于我的预期,则特定内容将返回给客户端。我之前尝试过使用request.content_length,当请求是POST请求时它可以工作,但对于请求则不能工作GET。有没有办法做到这一点?
小智 7
Flask 请求继承自 werkzeug 请求:http://werkzeug.pocoo.org/docs/0.12/quickstart/#enter-request。因此 Flask 中请求的内容长度位于其标头中: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!'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4374 次 |
| 最近记录: |