於是接著上一篇 Rust 學習筆記,讓上次寫的 Breezin 用上 RESTful API 和 Access Token~之前的 HTTP API 的話就是特別樸素的那種,比如
http://10.0.1.2:2275/get?name=fan1 http://10.0.1.2:2275/set?name=fan1&value=2000 http://10.0.1.2:2275/set?name=fan1&value=auto
並且上面的都是 GET 請求,好處就是在瀏覽器裡手動輸入相應的 API 和引數就能呼叫;壞處就是非常不 RESTful,表示是否成功的狀態碼只在返回的 JSON 中,而 HTTP 的狀態碼都是 HTTP 200 OK
;其次,動詞 set
與 get
都在 URL 中出現,而不是像 RESTful API 規範的那樣,體現在 HTTP Method 上。
使用 RESTful API 的話,我們的請求就是如下樣子的了~
请求数据
HTTP Method | API Endpoint | Description |
GET | http://10.0.1.2:2275/api/v1/fans | Get all fans status |
GET | http://10.0.1.2:2275/api/v1/fans/:id | Get fan status of given :id |
GET | http://10.0.1.2:2275/api/v1/temps | Get all smc temperature sensors' status |
PUT | http://10.0.1.2:2275/api/v1/fans/:id | Update specified property of fan with :id |
當然,更新風扇的屬性的話,實際上可寫入的就只有 3 個 —— min
, manual
和 output
。那麼要傳值的話,肯定就是放在 PUT
方法的 body 裡面了~
例如需要設定 fan1
的最低 RPM 為 2000 的話,那麼就使用 PUT
方法訪問的 API Endpoint 是 http://10.0.1.2:2275/api/v1/fans/1
,其 body 為
{ "property": "min", "value": 2000 }
同時,因為選擇哪一個風扇是在 URI 上確定的,因此也需要用一下正則表達式去匹配。這裡我們用到的正則表達式如下~
Continue reading 从零开始的 Rust 学习笔记(11) —— 让 Breezin 用上 RESTful API 和 Access Token