如何用Rocket框架回應任意資料並套用HTTP的ETag機制? 2019 年 8 月 18 日 Magic Len Rust 在先前的文章中有提到用Rocket框架回應任意資料的方式,在另一篇文章中也有介紹用Rocket框架來實現HTTP的ETag快取機制,要怎麼樣把這兩個東西結合在一起使用呢? 繼續閱讀
如何用Rocket框架實現HTTP的ETag快取機制? 2019 年 8 月 16 日 Magic Len Rust ETag是HTTP提供的快取機制,可以讓伺服器利用簡單的字串比對,來驗證客戶端先前快取到的HTTP回應是否依然有效。它的流程主要是這樣:伺服器在回應資料的同時,於HTTP回應標頭中夾帶「ETag」欄位,這個欄位的值就相當於這個資料的ID,而客戶端在將HTTP回應快取下來之後,若需重新發送請求時,就會在HTTP請求中夾帶「If-None-Match」欄位,將原先快取到的ETag值再回傳給伺服器,讓伺... 繼續閱讀
如何用Rocket框架回應任意資料? 2019 年 8 月 14 日 Magic Len Rust Rocket框架雖然可以提供靜態檔案,但有時候我們的資料來源並不是檔案,而可能是從資料庫撈出來的資料,或者是由程式動態產生出來的資料。雖然Rocket框架可以直接使用「Vec<u8>」來作為回應的型別,但使用起來並不是很方便,因為在回應二進制資料時,除非是讓特定程式存取的API,不然我們幾乎是一定會需要替回應的資料設定內容類型(Content-Type)的,否則網頁瀏覽器就不會知道伺服器回應的資料... 繼續閱讀
如何讓Rocket框架回應給網頁瀏覽器的資料可以直接被下載成檔案? 2019 年 8 月 12 日 Magic Len Rust 一般網頁瀏覽器在開啟一些常用文件、圖片、影片等格式時,會直接在網頁瀏覽器上進行瀏覽或是播放,但有時候我們會希望使用者可以在點擊網頁連結之後,無論該連結的資源是什麼類型的檔案,使網頁瀏覽器都會跳出下載的視窗。 繼續閱讀
如何替Rocket框架的HTTP回應加上快取? 2019 年 8 月 10 日 Magic Len Rust HTTP協定提供了一些快取機制,最基本的就是Cache-Control。Cache-Control可以用來控制HTTP連線要如何被快取,例如最常見的用法就是透過「max-age」參數來設定快取時間,搭配「public」或是「private」參數來控制快取的可見程度。不過Rocket框架本身並沒有對Cache-Control提供直接的支援,所以使用起來不是很方便。 繼續閱讀
如何用Rocket框架取得客戶端的IP位址? 2019 年 8 月 8 日 Magic Len Rust 在開發Web服務的時候,我們可能會需要透過客戶端的IP位址,來協助判斷其所在的地區。一般來說,透過HTTP協定獲取客戶端IP的來源有三個地方,一個是Socket連線的IP位址,一個是HTTP請求中的「X-Real-IP」標頭欄位,一個是HTTP請求中的「X-Forwarded-For」標頭欄位。 繼續閱讀
如何用Rocket框架安全地讀取HTTP標頭中的Accept-Language欄位? 2019 年 8 月 6 日 Magic Len Rust 在實作多國語言的Web服務時,會需要去讀取客戶端傳送來的HTTP請求標頭中的「Accept-Language」欄位,來判斷客戶端偏好使用的語言。然而,Rocket框架並未內建解析「Accept-Language」欄位的功能,開發者只能自行去撰寫程式來想辦法用「Accept-Language」欄位的原始資料去做客戶端的語言判斷,不但麻煩又很不安全。 繼續閱讀
Rocket入門指南 第十一章:測試 2019 年 7 月 25 日 Magic Len 研究分享、 Rust Rocket框架提供的測試架構十分簡單,只要產生出想要測試的Rocket實體,再將它提供給「local」模組下的「Client」結構體使用,Rocket應用程式就能搖身一變,可以直接用寫程式的方式來發送請求和接收回應。 繼續閱讀
Rocket入門指南 第十章:資料庫的存取 2019 年 7 月 23 日 Magic Len 研究分享、 Rust Web框架常會搭配資料庫一起使用,Rocket框架當然也有一定程度的資料庫支援。雖然我們可以直接使用Rocket框架提供的應用程式狀態機制來註冊任意套件提供的資料庫實體,但是在程式撰寫上會比較麻煩一點,像是資料庫的位址、帳密等資訊,我們可能就必須要寫死在程式碼內,或是自己再另外開發出可以讓Rocket框架從外部讀取資料庫設定值的功能。Rocket官方提供的「rocket_db_pools」套件,能... 繼續閱讀
Rocket入門指南 第九章:進階處理HTTP回應(Response)的方式 2019 年 7 月 21 日 Magic Len 研究分享、 Rust 在這個章節中,會繼續介紹Rocket對不同資料格式提供的回應支援,包括JSON和MessagePack格式的回應,以及Handlebars和Tera這兩個HTML模板引擎。此外還會介紹Rocket框架本身提供的「快閃訊息」(Flash Message)機制。 繼續閱讀