Rocket 0.4 RC 发布,迄今最大更新版本!

栏目: 软件资讯 · 发布时间: 6年前

内容简介:Rocket是Rust的Web框架,侧重于易用性,可表达性和速度。 新功能: 引入了类型化的URI。 引入了ORM不可知数据库支持。 引入请求本地状态。 引入可安装的静态文件服务StaticFiles。 引入自动实时模板重新加载。 通过...

Rocket是Rust的Web框架,侧重于易用性,可表达性和速度。

新功能:

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!返回a JsonValue,不再需要包装。

    更改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地址(如果存在)。

  • 发布构建默认为生产环境。

    人工环境设置为debugROCKET_ENV=debug为以前的行为。

  • 所有环境都默认为端口8000。

    手动配置的端口80用于stageproduction 环境为以前的行为。

  • Bind变种被添加到LaunchErrorKind

    确保匹配LaunchErrorKind包含或忽略Bind变体。

  • Cookie会自动跟踪和传播Client

    对于先前的行为,构造一个Clientwith Client::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

    在一般情况下,更换型UriOrigin。在baseuri 领域Route现在式Origin。在&Uri后卫现在是 &OriginRequest::uri()现在返回一个Origin

  • Redirect构造函数采用泛型类型T: TryInto<Uri<'static>>

    Redirect具有非'static &str 表单形式 的构造函数的调用Redirect::to(string)应该变为Redirect::to(string.to_string()),在传递给构造函数之前对字符串进行堆分配。

  • FromData对IMPL FormLenientForm现在返回一个类型的错误FormDataError

    在非I / O错误上,表单字符串作为一个存储在变量中&'f str

  • Missing变种被添加到ConfigError

    确保匹配ConfigError包含或忽略Missing变体。

  • Route和catcher属性尊重功能隐私。

    要在模块外部安装路径或注册捕手,请确保标记处理函数pubcrate

  • FromData用于IMPL Json现在返回类型的错误 JsonError

    以前SerdeError是现在的.1成员JsonError enum。匹配并销毁先前行为的变体。

  • FromData现在仿效了FromDataSimple

  • FormLenientForm丢失了一生的参数,get()方法。

    将类型更改Form<'a, T<'a>>Form<T>Form<T<'a>>Form<T> 而LenientForm<T>现在实施Deref<Target = T>,允许呼叫.get()被删除。

  • 查询处理语法已经完全改进。

    查询参数<param>现在是<param..>。考虑您的应用程序是否受益于修改后的查询字符串处理

  • FormItems迭代类型的值FormItem

    映射.map(|item| item.key_value())用于以前的行为。

  • 所有项目rocket_contrib都在模块后面命名。

    • Json 就是现在 json::Json

    • MsgPack 就是现在 msgpack::MsgPack

    • MsgPackError 就是现在 msgpack::Error

    • Template 就是现在 templates::Template

    • UUID 就是现在 uuid::Uuid

    • Value 被替换为 json::JsonValue

  • Request::get_param()并按Request::get_segments()索引 ,而不是动态参数。

    n适当地修改对这些函数的调用中的参数。

  • 基于方法的路由属性不再接受键控path参数。

    将表单的属性更改#[get(path = "..")]#[get("..")]

  • JsonMsgPack数据保护不再拒绝具有意外Content-Type的请求

    要近似以前的行为,请format = "json"在使用Jsonformat = "msgpack"使用时添加路径参数MsgPack

  • 实现ResponderStatus。去除Failure, status::NoContentstatus::Reset反应。

    替换的用途Failure(status)status直接。替换 status::NoContentStatus::NoContent。替换status::Reset为 Status::ResetContent

  • Status::new()不再const

  • Json 不再具有其类型参数的默认值。

  • 使用data在非有效载荷法路线是一个警告而不是错误。

  • 所述raw_form_string的方法FormLenientForm除去。

  • 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()?)

  • 检测并显式发出启动时的地址/端口绑定错误。

  • Flash cookie只有在检查后才会被清除。

  • 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)作为已知媒体类型。

  • 添加了.webaWEBA),.ogvOGG),.mp4MP4),.mpeg4MP4),.aacAAC),.icsCalendar),.binBinary),.mpgMPEG),.mpegMPEG),.tarTAR),.gzGZIP),.tifTIFF),.tiff (TIFF),.movMOV)作为已知扩展。

  • 路由属性和声明性宏之间的交互已得到改进。

  • 生成的代码现在记录日志记录基础结构而不是使用 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]


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

人类2.0

人类2.0

皮埃罗∙斯加鲁菲(Piero Scaruffi) / 闫景立、牛金霞 / 中信出版集团股份有限公司 / 2017-2-1 / CNY 68.00

《人类2.0:在硅谷探索科技未来》从在众多新技术中选择了他认为最有潜力塑造科技乃至人类未来的新技术进行详述,其中涉及大数据、物联网、人工智能、纳米科技、虚拟现实、生物技术、社交媒体、区块链、太空探索和3D打印。皮埃罗用一名硅谷工程师的严谨和一名历史文化学者的哲学视角,不仅在书中勾勒出这些新技术的未来演变方向和面貌,还对它们对社会和人性的影响进行了深入思考。 为了补充和佐证其观点,《人类2.0......一起来看看 《人类2.0》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具