Rocket 0.4 RC 釋出,迄今最大更新版本!
Rocket是Rust的Web框架,側重於易用性,可表達性和速度。
新功能:
-
引入了ofollow,noindex" target="_blank">型別化的URI 。
-
引入請求本地狀態 。
-
引入可安裝的靜態檔案服務
StaticFiles
。 -
引入自動實時模板重新載入 。
-
通過引入轉換 資料保護
FromData::transform()
。 -
引入了改進的查詢字串處理 。
-
新增 派生
FromFormValue
。 -
新增 派生
Responder
。 -
新增
Template::custom()
了自定義模板引擎,包括註冊過濾器和幫助程式。 -
Cookie會自動跟蹤和傳播
Client
。 -
私人cookie可以新增到本地請求中
LocalRequest::private_cookie()
。 -
釋出版本預設為
production
環境。 -
可以通過
keep_alive
配置引數配置Keep-alive 。 -
允許禁用CLI顏色和表情符號
ROCKET_CLI_COLORS=off
。 -
Route
format
接受諸如和之類的短號 。json
html
-
實現
Responder
了Status
。 -
新增
Response::cookies()
用於檢索響應cookie。 -
log
設定為時,禁用所有日誌記錄off
。 -
添加了
Metadata
用於檢索模板資訊的保護。 -
的
Uri
型別根據RFC 7230到的一個解析的URIOrigin
,Absolute
或Authority
。 -
新增
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
。改變的實現 ,不使用,的
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
均記錄在案,並提供正確的非正式證明。