
ASP.NET Web API快速入門介紹
首先創建了一個Foo類型的變量foo,然后我們執行let bar = foo;,然后我們嘗試輸出這兩個變量的值,如果我們將第9行的注釋去掉,程序將無法通過編譯,這是因為在 Rust中,對于沒有實現Copy trait的類型,如果我們將一個綁定賦給另一個綁定,默認使用的是move語義,也即對于任意給定的資源,當且僅當有一個變量綁定與之對應。
在Rust生態中進行HTTP Web后端應用開發目前主要依賴兩個基礎庫:http 以及hyper,其中 http 提供HTTP標準相關的基礎類型,如Request<T> 、Response<T>以及StatusCode和常用的Header等;hyper的定位是一個高效、準確的 HTTP底層庫,它封裝了HTTP的報文解析、報文編碼處理、連接控制等內容,對于用戶而言只需要實現一個類似于Fn(Request) -> Response的映射,就可以完成HTTP Web服務端的開發。
基于http以及hyper,社區中還有很多用于Web應用開發的框架,常用的有:
?rocket
?iron
?actix-web
?tower-web
值得一提的是上周剛發布的tower-web,因為這是官方net團隊2018年工作計劃的一部分, 這個庫在未來會為Rust生態提供一個靈活、高效、易于使用的Web開發框架。那么事不宜遲, 我們通過實戰演練來一睹為快。
在本月月底,tower-web將會集成到warp項目中,成為warp框架的一部分,開發的重心將會轉移到warp上。
登錄華為云,并創建彈性云服務器作為我們的后端應用服務器:
實戰中使用的系統版本為Ubuntu 16.04,如果選擇不同的系統需要根據情況調整命令。
安裝相關的工具鏈
apt update && apt install build-essential
# 安裝Rust工具鏈
curl https://sh.rustup.rs -sSf | sh
這一步結束后,我們就可以開始編寫我們的應用服務了。
編寫后端Web應用
這次分享我們來構建一個RESTful中文分詞API,首先我們來創建一個Rust工程 cargo new –bin chinese_segmentation
接下來在Cargo.toml中添加相關
[dependencies]
tower-web = "0.2"
# Jieba Chinese Work Segmentation
jieba-rs = "0.2"
# logging utils
log = "0.4.0"
env_logger = "0.5.12"
# Serializing responses, deserializing requests
serde = "1.0.70"
然后是我們的main.rs,與其他語言一樣,在文件開始的部分引入外部依賴以及相關聲明:
接下來我們定義我們的服務資源ChineseTokenizer:
定義了我們的服務資源后,我們來定義輸入Web API的輸入輸出類型:
到目前為止,我們已經有了我們的服務資源,輸入輸出類型,接下來就到我們的重頭戲了, Web 部分的實現,別擔心,因為真的很簡單。
最后是我們的main函數:
現在,我們通過命令RUST_LOG=chinese_segmentation=info cargo run –release來檢驗 一下我們的成果了。服務在本地跑起來之后,我們可以通過命令 curl -H “Content-Type: application/json” -X POST -d ‘{“text”:”中間件小哥”}’ <url> 來測試一下我們的接口。
本地測試通過之后,就需要著手開始部署了,我們檢查一下彈性云服務器的安全組的入方向 是否放開8081端口。
API 網關集成了監控、流控、負載均衡等一系列功能,為開發者提供高性能、高可用的API 托管服務,在本次實踐中,我們將我們的API部署在API網關中。
1 登錄華為云API網關服務,選擇“新建API”?
2 填寫API的基本信息。
在本次實驗中,選擇無認證。
3 定義API請求。
請求路徑填為 /segment,方法為 POST。
4 定義后端服務。
請求方式設置為POST,在VPC通道這一項中,我們需要新建VPC通道。端口設置為8081, 并將其與彈性云服務器關聯。
創建完VPC通道后,回到API創建頁面,填入相關信息:
網關創建完成后,我們需要回到我們的彈性云服務器,將我們的后端服務器先跑起來:
RUST_LOG=chinese_segmentation=info nohup ./target/release/chinese_segmentation 2>&1 ~/api.log &
作為示例,這里使用nohup命令來跑我們的服務。但在生產環境中,建議使用 systemd等工具來跑服務。服務在云服務器運行起來之后,將API發布至RELEASE環境中。
然后我們就可以和我們的API愉快地玩耍啦。
文章轉自微信公眾號@中間件小哥