Rust 單人 web 框架:Loco
Loco 被稱爲面向業餘項目和初創公司的 Rust 單人框架。Loco 深受 Rails 的啓發,如果你瞭解 Rails 和 Rust,你會覺得很自在。如果你不瞭解 Rails,那麼你會發現 Loco web 框架令人耳目一新。
在這篇文章中,我們將演示一個不需要數據庫的簡單示例。
首先,安裝 Loco:
cargo install loco-cli
建立一個項目,如果你還沒有一個工作目錄,則創建一個文件夾來保存你所有的項目:
mkdir myprojects
cd myprojects
在工作目錄下,運行以下命令創建一個新應用程序:
loco new
這將詢問項目名稱 (默認爲 myapp),然後它將使用該名稱創建一個文件夾。
它還會詢問項目的類型,爲你提供三個選擇:
-
lightweight-service (最小版本,只有控制器和視圖)
-
Rest API (包含數據庫和用戶認證)
-
Saas app (包含數據庫和用戶認證)
爲簡單起見,我們使用默認名稱,並選擇第一個不需要數據庫的項目類型。
這樣,就創建了一個名爲 myapp 的文件夾,它是一個初始化的 Rust Crate 的 git 存儲庫,其中包含許多文件:
$ tree
.
├── Cargo.lock
├── Cargo.toml
├── README.md
├── config
│ ├── development.yaml
│ ├── production.yaml
│ └── test.yaml
├── src
│ ├── app.rs
│ ├── bin
│ │ └── main.rs
│ ├── controllers
│ │ ├── home.rs
│ │ └── mod.rs
│ ├── lib.rs
│ └── views
│ ├── home.rs
│ └── mod.rs
└── tests
├── mod.rs
└── requests
├── home.rs
├── mod.rs
└── snapshots
└── can_get_home@home_request.snap
啓動開發服務器:
cargo loco start
這將安裝一堆 crate,並在端口 3000 上啓動 web 應用程序,
訪問 http://localhost:3000/api,網頁顯示 “{"app_name":"loco"}”。
我們也可以使用以下命令運行測試:
cargo test
下面,我們添加一個新的 api。在 src/views 目錄中,創建一個 hello.rs 文件,代碼如下:
use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, Serialize)]
pub struct HelloResponse {
pub name: String,
}
impl HelloResponse {
#[must_use]
pub fn new(name: &str) -> Self {
Self {
name: name.to_string(),
}
}
pub fn hello(&self) -> String {
format!("Hello, {}", self.name)
}
}
修改 src/views/mod.rs 文件:
pub mod hello;
pub mod home;
在 src/controllers 目錄下,創建一個 hello.rs 文件,代碼如下:
use loco_rs::prelude::*;
use crate::views::hello::HelloResponse;
async fn hello() -> Result<Json<String>> {
format::json(HelloResponse::new("Loco").hello())
}
pub fn routes() -> Routes {
Routes::new().add("/hello", get(hello))
}
修改 src/controllers/mod.rs 文件:
pub mod hello;
pub mod home;
最後,修改 src/app.rs 文件:
pub struct App;
#[async_trait]
impl Hooks for App {
......
fn routes() -> AppRoutes {
AppRoutes::empty()
.prefix("/api")
.add_route(controllers::home::routes())
.add_route(controllers::hello::routes())
}
......
}
啓動服務器:
cargo loco start
訪問 http://localhost:3000/api/hello,網頁顯示 "Hello, Loco"。
這是一個很有前途的 web 框架,我們將拭目以待。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/-6o2dkrLNDj2vjieZVA2Bw