首先創建了一個Foo類型的變量foo,然后我們執行let bar = foo;,然后我們嘗試輸出這兩個變量的值,如果我們將第9行的注釋去掉,程序將無法通過編譯,這是因為在 Rust中,對于沒有實現Copy trait的類型,如果我們將一個綁定賦給另一個綁定,默認使用的是move語義,也即對于任意給定的資源,當且僅當有一個變量綁定與之對應。

使用Rust進行HTTP Web后端應用開發

在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部署在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愉快地玩耍啦。

文章轉自微信公眾號@中間件小哥

上一篇:

為 Django 配備 GraphQL API

下一篇:

ASP.NET Web API快速入門介紹
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費