内容简介: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
接受诸如和之类的短号。json
html
添加
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
。对于先前的行为,构造一个
Client
withClient::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
成员JsonError
enum
。匹配并销毁先前行为的变体。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::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("..")]
。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()?)
。检测并显式发出启动时的地址/端口绑定错误。
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
)作为已知媒体类型。添加了
.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 同时发布多个版本更新
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
人类2.0
皮埃罗∙斯加鲁菲(Piero Scaruffi) / 闫景立、牛金霞 / 中信出版集团股份有限公司 / 2017-2-1 / CNY 68.00
《人类2.0:在硅谷探索科技未来》从在众多新技术中选择了他认为最有潜力塑造科技乃至人类未来的新技术进行详述,其中涉及大数据、物联网、人工智能、纳米科技、虚拟现实、生物技术、社交媒体、区块链、太空探索和3D打印。皮埃罗用一名硅谷工程师的严谨和一名历史文化学者的哲学视角,不仅在书中勾勒出这些新技术的未来演变方向和面貌,还对它们对社会和人性的影响进行了深入思考。 为了补充和佐证其观点,《人类2.0......一起来看看 《人类2.0》 这本书的介绍吧!