HTTP 实用程序 — Werkzeug 文档

来自菜鸟教程
Werkzeug/docs/1.0.x/http
跳转至:导航、​搜索

HTTP 实用程序

Werkzeug 提供了几个函数来解析和生成 HTTP 标头,这些功能在实现 WSGI 中间件或在较低级别上操作时非常有用。 所有这些功能也从请求和响应对象中公开。

日期函数

以下函数简化了在 HTTP 上下文中处理时间的过程。 Werkzeug 在内部使用 offset-naive datetime 对象以 UTC 格式存储时间。 如果您在应用程序中使用时区,请确保在处理值之前将 tzinfo 属性替换为 UTC 时区信息。


标头解析

以下函数可用于解析传入的 HTTP 标头。 由于 Python 不提供具有 RFC 2616 所需语义的数据结构,Werkzeug 实现了一些 单独记录的自定义数据结构


标题实用程序

以下实用程序可以很好地处理 HTTP 标头,但不会解析它们。 如果您正在处理条件响应,或者您想要代理任意请求但想要删除不支持 WSGI 的逐跳标头,它们将非常有用。 还有一个函数可以从解析的数据中创建 HTTP 标头字符串。


饼干

条件响应助手

对于条件响应,以下函数可能有用:


常数

werkzeug.http.HTTP_STATUS_CODES
状态代码 -> 默认状态消息对的字典。 这被包装器和其他地方使用,其中整数状态代码在整个 Werkzeug 中被扩展为字符串。


表单数据解析

Werkzeug 提供与请求对象分开的表单解析函数,以便您可以从普通的 WSGI 环境访问表单数据。

表单数据解析器当前支持以下格式:

  • 应用程序/x-www-form-urlencoded
  • 多部分/表单数据

当前不支持嵌套多部分 (Werkzeug 0.9),但任何现代 Web 浏览器都不使用它。

用法示例:

>>> from cStringIO import StringIO
>>> data = '--foo\r\nContent-Disposition: form-data; name="test"\r\n' \
... '\r\nHello World!\r\n--foo--'
>>> environ = {'wsgi.input': StringIO(data), 'CONTENT_LENGTH': str(len(data)),
...            'CONTENT_TYPE': 'multipart/form-data; boundary=foo',
...            'REQUEST_METHOD': 'POST'}
>>> stream, form, files = parse_form_data(environ)
>>> stream.read()
''
>>> form['test']
u'Hello World!'
>>> not files
True

通常,WSGI 环境由 WSGI 网关提供,其中传入数据是其中的一部分。 如果你想为单元测试生成这样的假 WSGI 环境,你可能需要使用 create_environ() 函数或 EnvironBuilder 来代替。