跳转到主要内容

WSGI请求和响应对象

项目描述

https://travis-ci.org/Pylons/webob.png?branch=master Documentation Status

WebOb 提供用于 HTTP 请求和响应的对象。具体来说,它通过封装 WSGI 请求环境和响应状态/头部/app_iter(体)来实现。

请求和响应对象为解析 HTTP 请求和构造 HTTP 响应提供了许多便利。这两个对象都是读写:因此,WebOb 也是创建 HTTP 请求和解析 HTTP 响应的好方法。

支持和文档

请访问 WebOb 文档网站 查看文档、报告错误和获取支持。

许可证

WebOb 在 MIT 许可证 下提供。

作者

WebOb 由 Ian Bicking 编写,目前由 Pylons 项目 和一支贡献者团队维护。

1.8.8 (2024-08-13)

安全修复

1.8.7 (2021-02-17)

错误修复

1.8.6 (2020-01-21)

实验性功能

1.8.5 (2019-01-03)

警告

  • 修复了文档字符串中的一个最后一个无效的转义序列。

1.8.4 (2018-11-11)

错误修复

警告

  • 新接受处理代码引入的一些反斜杠在将源编译为 pyc 文件时导致 DeprecationWarnings,所有反斜杠都已按照适当的方式重新约束,用户应不再看到关于无效转义序列的 DeprecationWarnings。请参阅 https://github.com/Pylons/webob/issues/384

1.8.3 (2018-10-14)

错误修复

  • acceptparse.AcceptValidHeaderacceptparse.AcceptInvalidHeaderacceptparse.AcceptNoHeader 现在在调用 .acceptable_offers() 时将始终忽略不匹配所需媒体类型语法的报价。先前版本在 AcceptValidHeader 中对无效报价引发 ValueError,并在其他情况下将其作为可接受的返回。请参阅 https://github.com/Pylons/webob/pull/372

功能

  • 添加了 Request.remote_host,公开 REMOTE_HOST 环境变量。

  • acceptparse.Accept.parse_offer 添加到明确说明哪些报价与 acceptparse.AcceptValidHeader.acceptable_offersacceptparse.AcceptMissingHeader.acceptable_offersacceptparse.AcceptInvalidHeader.acceptable_offers 兼容。此 API 还使用小写类型/子类型和参数名称对报价进行标准化。请参阅 https://github.com/Pylons/webob/pull/376https://github.com/Pylons/webob/pull/379

1.8.2 (2018-06-05)

错误修复

1.8.1 (2018-04-10)

错误修复

  • WebOb 1.8.0 中废弃的 acceptparse.MIMEAccept 引入了一个导致其在无效接受头中引发错误的向后不兼容更改。现在已撤销此行为,并对 MIMEAccept 进行了一些其他修复,使其更像旧版本。请参阅 https://github.com/Pylons/webob/pull/356

1.8.0 (2018-04-04)

功能

兼容性

  • WebOb 已不再官方支持 Python 3.3,该版本已于 2017-09-29 到期。

向后不兼容性

  • WebOb 的接受处理方式已经发生了许多变化,不仅针对接受头本身,还包括 Accept-Charset、Accept-Encoding 和 Accept-Language。这是一个由 Whiteroses(《https://github.com/whiteroses》)完成的 Google Summer of Code 项目。感谢 Google 运行 GSoC、Python 软件基金会组织和 Ira 完成这项工作。请参阅《https://github.com/Pylons/webob/pull/338》和《https://github.com/Pylons/webob/pull/335》。文档可在《https://docs.pylonsproject.org/projects/webob/en/master/api/webob.html》找到

  • 当调用一个用 @wsgify 装饰的函数时,现在将使用传递给 @wsgify 的默认参数来调用请求,而不是作为 start_response

    def hello(req, name):
        return "Hello, %s!" % name
    app = wsgify(hello, args=("Fred",))
    
    req = Request.blank('/')
    resp = req.get_response(app)  # => "Hello, Fred"
    resp2 = app(req) # => "Hello, Fred"

    之前,当使用 resp2 行时可能会因为 TypeError 而失败。这次更改后,无法通过不提供任何参数的方式来覆盖默认参数。请参阅 https://github.com/Pylons/webob/pull/203

  • 当在 Response 对象上设置 app_iter 时,content_md5 头不再被清除。这种行为很奇怪,并阻止了设置 content_md5 然后返回用于分块内容编码的迭代器。请参阅 https://github.com/Pylons/webob/issues/86

实验性功能

这些功能是实验性的,未来可能会有所改变。

错误修复

  • 异常现在使用 string.Template.safe_substitute 而不是 string.Template.substitute。后者会在缺少映射时引发错误,而前者将简单地不替换缺失的变量。这在 WSGI 环境不包含用于正文模板的必要键时更安全。请参阅 https://github.com/Pylons/webob/issues/345

  • Request.host_url, Request.host_port, Request.domain 正确解析由浏览器提供的 IPv6 Host 头。请参阅 https://github.com/Pylons/webob/pull/332

  • Request.authorization 对于不寻常或格式错误的头值会引发 ValueError。请参阅 https://github.com/Pylons/webob/issues/231

  • 允许在调用 request.decode 时使用替代编码对表单数据中的无名称字段进行正确转码。请参阅 https://github.com/Pylons/webob/pull/309

  • Response.__init__ 在没有正文的情况下会丢弃 app_iter,这会在 app_iter 是与 Web 应用程序生命周期相关联的对象并且必须被正确关闭时引发问题。app_iterResponse 的更高级 API,因此即使它包含正文并且违反了 HTTP RFC,我们也应该允许用户通过返回正文来“自我伤害”。请参阅 https://github.com/Pylons/webob/issues/305

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

webob-1.8.8.tar.gz (279.0 kB 查看哈希值)

上传时间

构建分发

WebOb-1.8.8-py2.py3-none-any.whl (115.3 kB 查看哈希值)

上传时间 Python 2 Python 3

支持者