内容简介:Rocket是Rust的Web框架,侧重于易用性,可表达性和速度。 新功能: 引入了类型化的URI。 引入了ORM不可知数据库支持。 引入请求本地状态。 引入可安装的静态文件服务StaticFiles。 引入自动实时模板重新加载。 通过...
Rocket是Rust的Web框架,侧重于易用性,可表达性和速度。
新功能:
引入了类型化的URI。
引入了ORM不可知数据库支持。
引入请求本地状态。
引入可安装的静态文件服务
StaticFiles。引入自动实时模板重新加载。
通过引入自定义有状态处理程序
Handler。通过引入转换数据保护
FromData::transform()。引入了改进的查询字符串处理。
添加派生
Responder。添加
Template::custom()了自定义模板引擎,包括注册过滤器和帮助程序。Cookie会自动跟踪和传播
Client。私有cookie可以添加到本地请求中
LocalRequest::private_cookie()。发布版本默认为
production环境。可以通过
keep_alive配置参数配置Keep-alive 。允许禁用CLI颜色和表情符号
ROCKET_CLI_COLORS=off。Route
format接受诸如和之类的短号。jsonhtml添加
Response::cookies()用于检索响应cookie。log设置为时,禁用所有日志记录off。添加了
Metadata用于检索模板信息的保护。添加
Outcome::and_then(),Outcome::failure_then()和Outcome::forward_then()。实现
Responder了&[u8]。任何
T: Into<Vec<Route>>可以mount()编辑。默认排名范围从-6到-1,区分静态查询字符串。
添加
Request::get_query_value()了按键检索查询值。
Codegen重写
该rocket_codegen箱已经使用到是稳定程序的API宏被完全改写。我们预计夜间破损将大幅下降,因此可能为零。Rocket应用程序的新前奏导入是:
#![feature(proc_macro_hygiene,decl_macro)] #[macro_use] extern crate rocket;
该rocket_codegen箱应该不会是直接依赖。从你的删除Cargo.toml:
[dependencies] rocket =“0.4”
突破性变化
此版本包含许多重大更改。下面列出了这些更改以及有关如何在适用时处理现有应用程序中的重大更改的简短说明。
LaunchErrorKind::Collision包含碰撞路线的矢量。破坏使用
LaunchErrorKind::Collision(..)忽略向量。更改
Json(json!(..))to的实例json!并将相应的类型更改为JsonValue。ring已更新为0.13。确保所有传递依赖项都
ring引用版本0.13。TLS证书需要
subjectAltName扩展名。确保您的TLS证书包含
subjectAltName具有为您的域设置的值的扩展。LocalRequest严格检查路径路径,挂载点和URI。确保您的安装点是没有参数的绝对路径,确保您的路径路径是具有适当参数语法的绝对路径,并确保传递的路径
LocalRequest有效。Template::show()接受&Rocket,不接受root。使用
client.rocket()去的一个实例的引用Rocket测试时。用于Template::render()路线。Request::remote()返回实际的远程IP,不重写。使用
Request::real_ip()或Request::client_ip()从“X-Real-IP”标头中检索IP地址(如果存在)。发布构建默认为生产环境。
人工环境设置为
debug与ROCKET_ENV=debug为以前的行为。所有环境都默认为端口8000。
手动配置的端口
80用于stage和production环境为以前的行为。Bind变种被添加到LaunchErrorKind。确保匹配
LaunchErrorKind包含或忽略Bind变体。Cookie会自动跟踪和传播
Client。对于先前的行为,构造一个
ClientwithClient::untracked()。UUID被重命名为Uuid。用
Uuid而不是UUID。该
#[error]属性和errors!宏被删除。使用
#[catch]和catchers!替代。Rocket::catch()被重命名为Rocket::register()。将表单的调用更改
.catch(errors![..])为.register(catchers![..])。该
#[catch]属性仅接受带有0或1参数的函数。确保捕获器的参数(如果有)属于类型
&Request。LocalRequest::cloned_dispatch()去掉了。链调用
.clone().dispatch()以前的行为。Uri很大程度上取代了Origin。在一般情况下,更换型
Uri用Origin。在base和uri领域Route现在式Origin。在&Uri后卫现在是&Origin。Request::uri()现在返回一个Origin。Redirect构造函数采用泛型类型T: TryInto<Uri<'static>>。对
Redirect具有非'static&str表单形式 的构造函数的调用Redirect::to(string)应该变为Redirect::to(string.to_string()),在传递给构造函数之前对字符串进行堆分配。在
FromData对IMPLForm和LenientForm现在返回一个类型的错误FormDataError。在非I / O错误上,表单字符串作为一个存储在变量中
&'f str。Missing变种被添加到ConfigError。确保匹配
ConfigError包含或忽略Missing变体。Route和catcher属性尊重功能隐私。
要在模块外部安装路径或注册捕手,请确保标记处理函数
pub或crate。该
FromData用于IMPLJson现在返回类型的错误JsonError。以前
SerdeError是现在的.1成员JsonErrorenum。匹配并销毁先前行为的变体。FromData现在仿效了FromDataSimple。Form并LenientForm丢失了一生的参数,get()方法。将类型更改
Form<'a, T<'a>>为Form<T>或Form<T<'a>>。Form<T>而LenientForm<T>现在实施Deref<Target = T>,允许呼叫.get()被删除。查询处理语法已经完全改进。
查询参数
<param>现在是<param..>。考虑您的应用程序是否受益于修改后的查询字符串处理。映射
.map(|item| item.key_value())用于以前的行为。所有项目
rocket_contrib都在模块后面命名。Json就是现在json::JsonMsgPack就是现在msgpack::MsgPackMsgPackError就是现在msgpack::ErrorTemplate就是现在templates::TemplateUUID就是现在uuid::UuidValue被替换为json::JsonValueRequest::get_param()并按段Request::get_segments()索引 ,而不是动态参数。n适当地修改对这些函数的调用中的参数。基于方法的路由属性不再接受键控
path参数。将表单的属性更改
#[get(path = "..")]为#[get("..")]。Json和MsgPack数据保护不再拒绝具有意外Content-Type的请求要近似以前的行为,请
format = "json"在使用Json或format = "msgpack"使用时添加路径参数MsgPack。实现
Responder了Status。去除Failure,status::NoContent和status::Reset反应。替换的用途
Failure(status)有status直接。替换status::NoContent为Status::NoContent。替换status::Reset为Status::ResetContent。Status::new()不再const。Json不再具有其类型参数的默认值。使用
data在非有效载荷法路线是一个警告而不是错误。所述
raw_form_string的方法Form和LenientForm除去。Error现在设置了各种不可能的相关类型!。所有
AdHoc构造函数都需要名称作为第一个参数。顶级
Error类型已删除。
一般改进
除了新功能外,Rocket还看到了以下改进:
现在,日志消息按名称引用路由。
启动时的碰撞错误命名冲突路线。
发动整流罩失效是指名称失败的整流罩。
默认
403捕手现在引用授权,而不是身份验证。HttpOnly默认情况下,私人cookie设置为并且有效期为1周。Tera模板实例加入。
无效的客户端请求会收到响应
400而不是500。响应机构可以根据
HEAD请求被可靠地剥离。添加了默认捕手
504: Gateway Timeout。配置信息记录在所有环境中。
unsafe核心库中使用量从9减少到2。FormItems现在解析空键和值以及没有值的键。Config::active()作为简写 添加Config::new(Environment::active()?)。检测并显式发出启动时的地址/端口绑定错误。
Flashcookie只有在检查后才会被清除。Sync绑定AdHoc::on_attach(),AdHoc::on_launch()被删除。AdHoc::on_attach(),AdHoc::on_launch()接受FnOnce。添加
Config::root_relative()用于检索相对于配置文件的路径。添加
Config::tls_enabled()用于确定是否主动启用TLS。在不支持它们的Windows版本上不会发出ASCII颜色代码。
添加了FLAC(
audio/flac),Icon(image/x-icon),WEBA(audio/webm),TIFF(image/tiff),AAC(audio/aac),Calendar(text/calendar),MPEG(video/mpeg),TAR(application/x-tar),GZIP(application/gzip),MOV(video/quicktime),MP4(video/mp4)作为已知媒体类型。添加了
.weba(WEBA),.ogv(OGG),.mp4(MP4),.mpeg4(MP4),.aac(AAC),.ics(Calendar),.bin(Binary),.mpg(MPEG),.mpeg(MPEG),.tar(TAR),.gz(GZIP),.tif(TIFF),.tiff(TIFF),.mov(MOV)作为已知扩展。路由属性和声明性宏之间的交互已得到改进。
生成的代码现在记录日志记录基础结构而不是使用
println!。通过缓存路由元数据优化了路由。
所有宏,派生和属性都单独记录在其中
rocket_codegen。log依赖已更新为0.4。handlebars依赖已更新为1.0。tera依赖已更新为0.11。uuid依赖已更新为0.7。rustls依赖已更新为0.14。cookie依赖已更新为0.11。
基础设施
所有文档都已版本化。
托管所有文档的先前版本,当前版本和开发版本。
该库与顶级目录改组
core和contrib。该
http模块被拆分为自己的rocket_http箱子。这只是一个内部变化。所有用途
unsafe均记录在案,并提供正确的非正式证明。
【声明】文章转载自:开源中国社区 [http://www.oschina.net]
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 自定义版本更新弹窗
- Apache Ignite 2.9.1 版本发布,小版本更新
- CCleaner v5.74.8184 发布:重要更新版本、可自动更新
- DBeaver 切换至日历版本控制,版本号更新至 21.0
- OneBase 1.3.2 版本更新
- PostgreSQL 同时发布多个版本更新
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。