Falcon 1.1.0的更改日志

正在中断更改

(无)

新的和改进的

  • 一个新的 bounded_stream 属性已添加到 falcon.Request 可以用来代替 stream 属性以减轻某些WSGi服务器使用的输入对象的阻塞行为。

  • 一个新的 uri_template 属性已添加到 Request 公开与用户代理请求的路径对应的路由模板。

  • A context 属性已添加到 Response 镜像已可用的同一属性 Request .

  • JSON编码的查询参数值现在可以通过 get_param_as_dict() .

  • 现在可以禁用查询参数值的csv样式分析。

  • get_param_as_bool() 现在识别“on”和“off”以支持IE的默认复选框值。

  • accept_ranges 属性已添加到 Response 以便于设置接受范围标题。

  • 增加了 HTTPUriTooLongHTTPGone 错误类。

  • 当没有为指定标题时 HTTPError ,现在默认为HTTP状态文本。

  • 对于大多数错误类,所有参数现在都是可选的。

  • 已澄清并扩展了与cookie相关的文档

  • 这个 falcon.testing.Cookie 添加了类以表示模拟请求返回的cookie。 falcon.testing.Result 现在暴露一个 cookies 用于检查返回的cookie的属性。

  • Pytest支持被添加到Falcon的测试框架中。应用程序现在可以选择编写UnitTest或Pytest样式的测试。

  • Falcon自己测试的测试运行程序从鼻子切换到了Pytest。

  • 当使用Falcon的测试框架模拟请求时,查询字符串参数现在可以指定为 dict ,作为传递原始查询字符串的替代方法。

  • 标志现在传递给 process_request 中间件方法,用于指示在处理请求时是否引发异常。添加了一个填充程序以避免破坏尚不接受这个新参数的现有中间件方法。

  • 一个新的CLI实用程序, falcon-print-routes 添加了一个模块:可调用,内省路由,并将结果打印到stdout。此实用程序与框架一起自动安装:

    $ falcon-print-routes commissaire:api
    -> /api/v0/status
    -> /api/v0/cluster/{name}
    -> /api/v0/cluster/{name}/hosts
    -> /api/v0/cluster/{name}/hosts/{address}
    
  • 自定义属性现在可以附加到 RequestResponse .这可以用作将值添加到 context 属性,或实现自定义子类。

  • get_http_status() 实现的目的是提供一种查找完整HTTP状态行的方法,只给出一个状态代码。

固定的

  • 什么时候? auto_parse_form_urlencoded 设置为 True 在尝试使用和分析主体之前,框架现在检查HTTP方法。

  • 在试图读取表单编码请求的主体之前,框架现在检查Content-Length头以确保预期的主体不是空的。这有助于防止错误请求在某些WSGi服务器后面运行时导致阻塞读取。

  • 当没有为目标资源实现请求的方法时,框架现在将引发 HTTPMethodNotAllowed ,而不是修改 Request 直接对象。这提高了自定义错误处理程序和中间件方法的可见性。

  • 错误类docstrings已更新以反映最新的RFC。

  • 当资源方法或挂钩引发错误时,现在将始终处理该错误(包括设置 Response 对象)在调用中间件方法之前。

  • 修复了一个案例,其中中间件处理在 HTTPErrorHTTPStatus 提高了。

  • 这个 encode() 方法现在将尝试检测指定的字符串是否已编码,如果是这种情况,则返回未更改的字符串。

  • 默认选项响应程序现在在响应中将内容长度显式设置为零。

  • falcon.testing.Result 现在假设在未指定字符集的情况下,响应主体编码为UTF-8,而不是在尝试解码响应主体时引发错误。

  • 在模拟请求时,Falcon的测试框架现在可以通过wsgi接口正确地传输Unicode字符。

  • import falcon.uri 现在工作了,除了 from falcon import uri .

  • 当添加路由时,现在可以预先验证uri模板字段,以确保它们是有效的python标识符。这可以防止在稍后路由请求时引发隐藏错误。

  • 在python 3下运行时, inspect.signature() 使用而不是 inspect.getargspec() 提供与注释函数的兼容性。