内容简介: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 同时发布多个版本更新
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
付费:互联网知识经济的兴起
方军 / 机械工业出版社 / 2017-6-1 / CNY 59.00
关于互联网知识付费的首部作品 知识工作正在被重塑,知识经济正在开启互联网时代下半场 为你展现互联网知识经济全景大图,解读新物种的前世今生 内容简介 一个产业解读 三个分析工具 一组知识卡片 书是最早的知识载体,已有2000多年的付费历史,随着移动互联网的普及,新的知识经 济在今天爆发,知识的创造者和传播者从书后走到了书前,互联网知识经济正在拉开帷幕。知识的......一起来看看 《付费:互联网知识经济的兴起》 这本书的介绍吧!