Falcon 3.1.0的更改日志¶
总结¶
该版本对请求验证和错误处理进行了一些改进,并对静态和可下载文件的响应处理进行了一些调整。
由于民众的需求, TestClient
和 ASGIConductor
现在公开方便快捷的别名 simulate_*
方法,即, simulate_get()
现在还提供了 get()
等。
还修复了一些重要的错误,以确保应用程序正确清理响应流,并且在读取使用分块传输编码流传输的请求正文时不会挂起。
此版本还添加了对CPython3.10的支持,并不推荐使用CPython3.6。
对支持平台的更改¶
现在完全支持CPython3.10。 (#1966 _)
对Python3.6的支持现在已弃用,并将在Falcon4.0中删除。
与上一版本一样,Python3.5支持仍处于弃用状态,在Falcon4.0中将不再受支持。
新的和改进的¶
这个
jsonschema.validate
修饰器现在引发一个MediaValidationError
而不是泛型HTTPBadRequest
对于请求媒体验证失败。虽然默认行为以向后兼容的方式保持不变(因为专用异常是泛型异常的子类),但现在可以通过为新类添加错误处理程序轻松地对其进行定制。 (#1320 _)由于民众的需求,
TestClient
和ASGIConductor
现在公开方便快捷的别名simulate_*
methods, i.e.,simulate_get()
is now also available asget()
, etc. (#1806 )这个
Request.range
属性现在具有更严格的验证:当解析带有最后一个字节位置的字节范围规范时,它必须大于或等于第一个字节位置。
分析后缀字节范围规范时,后缀长度必须为正数。
Static routes
现在支持Range
requests. This is useful for streaming media and resumable downloads. (#1858 )添加了一个
Response.viewable_as
属性;这类似于Response.downloadable_as
但具有“内联”处理类型,因此响应仍将显示在浏览器中。 (#1951 _)添加了对传球的支持
pathlib.Path
对象为 directory in theadd_static_route()
method on all targeted Python versions. (#1962 )Static routes
现在设置Content-Length
header indicating a served file's size (or length of the rendered content range). (#1991 )当使用过时的位置参数调用时,方法和类初始值设定项(如
falcon.HTTPError
)现在将发出一个更便于用户使用的警告,指示相关方法的完全限定名。 (#2010 _)
固定的¶
如果提供,则
close()
method of an ASGIresp.stream
is now guaranteed to be called even in the case of an exception raised while iterating over the data. (#1943 )以前,当通过ASGI静态路由提供服务时,文件可能会保持打开状态(取决于底层GC实现)。已修复此问题,现在文件在呈现响应后显式关闭。 (#1963 _)
当请求使用分块传输编码(没有
Content-Length
known in advance), iterating overreq.stream
could hang until the client had disconnected. This bug has been fixed, and iteration now stops upon receiving the last body chunk as expected. (#2024 )
杂项¶
这个
compile_uri_template()
实用程序方法已弃用,将在Falcon 4.0中删除。此函数仅在框架的早期版本中使用,预计已完全被CompiledRouter
。在不太可能的情况下,它仍在活跃使用,其源代码可以简单地复制到受影响的应用程序中。 (#1967 _)
此版本的贡献者¶
非常感谢本次发布的所有贡献者!