二、前置條件

  1. 熟悉 Rust 并安裝 cargo
  2. 了解 HTTP 請求與 REST 概念
  3. 已安裝 SQLite(或 PostgreSQL)

?? AI 助攻
想自動生成帶注釋的 Cargo.toml?用「代碼生成」提示詞,30 秒即可拿到模板,再交給「代碼優化」砍掉冗余特性,編譯速度提升 20%!


三、項目初始化與依賴配置

cargo new rust-rocket-diesel && cd $_
cargo add diesel --features sqlite
cargo add rocket rocket_contrib rocket_codegen
cargo add serde serde_json serde_derive
cargo add dotenv

Cargo.toml 關鍵片段:

[dependencies]
diesel = { version = "1.4.5", features = ["sqlite"] }
rocket = "0.4.11"
rocket_contrib = "0.4.11"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
dotenv = "0.15.0"

四、Diesel 數據庫設置

1. 安裝 CLI 并初始化

cargo install diesel_cli --no-default-features --features sqlite
echo "DATABASE_URL=database.db" > .env
diesel setup

2. 創建遷移

diesel migration generate create_students

migrations/xxxx_create_students/up.sql:

CREATE TABLE students (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  name TEXT NOT NULL,
  age INTEGER NOT NULL
);

down.sql:

DROP TABLE students;

3. 應用遷移

diesel migration run
# 自動生成 src/schema.rs

五、定義模型與路由

1. 模型與 JSON 映射

use serde::{Deserialize, Serialize};
use diesel::prelude::*;

#[derive(Serialize, Deserialize, Queryable, Insertable, AsChangeset)]
#[table_name = "students"]
pub struct Student {
    pub id: Option<i32>,
    pub name: String,
    pub age: i32,
}

2. Rocket 數據庫連接池

use rocket_contrib::databases::diesel::SqliteConnection;
use rocket::http::Status;
use rocket::response::status;
use rocket::Json;

#[database("sqlite_db")]
pub struct DbConn(SqliteConnection);

六、CRUD 端點實現

1. POST /student —— 創建學生

#[post("/student", format = "json", data = "<new_student>")]
fn create_student(
    new_student: Json<Student>,
    conn: DbConn,
) -> Result<Json<Value>, Status> {
    conn.run(|c| {
        diesel::insert_into(students::table)
            .values(&new_student.into_inner())
            .execute(c)
            .map_err(|_| Status::InternalServerError)?;
        Ok(json!({ "status": "success" }))
    })
}

2. GET /students —— 查詢全部

#[get("/students")]
fn get_students(conn: DbConn) -> Result<Json<Value>, Status> {
    conn.run(|c| {
        let results = students::table
            .load::<Student>(c)
            .map_err(|_| Status::InternalServerError)?;
        Ok(Json(json!(results)))
    })
}

3. PUT /students/ —— 更新

#[put("/students/<id>", format = "json", data = "<update>")]
fn update_student(
    id: i32,
    update: Json<Student>,
    conn: DbConn,
) -> Result<Json<Value>, Status> {
    conn.run(|c| {
        diesel::update(students::table.find(id)))
            .set(&update.into_inner())
            .execute(c)
            .map_err(|_| Status::InternalServerError)?;
        Ok(json!({ "status": "success", "updated_id": id }))
    })
}

4. DELETE /students/ —— 刪除

#[delete("/students/<id>")]
fn delete_student(id: i32, conn: DbConn) -> Result<Json<Value>, Status> {
    conn.run(|c| {
        diesel::delete(students::table.find(id)))
            .execute(c)
            .map_err(|_| Status::InternalServerError)?;
        Ok(json!({ "status": "success", "deleted_id": id }))
    })
}

?? AI 審查
把「Diesel 查詢錯誤處理」提交評審?「代碼審查助手」可自動檢查連接池泄露、SQL 注入風險,提前發現 80% 潛在 Bug!


七、啟動與測試

1. 運行服務

cargo run
# 默認監聽 localhost:8000

2. 快速驗證(curl)

# 新增學生
curl -X POST localhost:8000/student \
  -H "Content-Type: application/json" \
  -d '{"name":"Alice","age":20}'

# 查詢全部
curl localhost:8000/students

# 更新
curl -X PUT localhost:8000/students/1 \
  -H "Content-Type: application/json" \
  -d '{"name":"Alice","age":21}'

# 刪除
curl -X DELETE localhost:8000/students/1

? AI 補救
把「curl 測試命令」寫進 README 太麻煩?用「代碼文檔生成器」提示詞,自動在函數頭部生成標準注釋,提醒后續接入 Postman 集合,文檔一鍵達標!


八、進階路線圖

階段 技術點 工具/庫
① 認證 JWT + Rocket 中間件 rocket-jwt
② 分頁 limit/offset 查詢 diesel-pagination
③ 日志 結構化日志 tracing
④ 容器化 多階段構建 Docker
⑤ CI/CD GitHub Actions cargo test + clippy

九、總結與下一步

通過本教程,您已學會:

下一步可在此基礎上添加認證、分頁、OpenAPI 文檔等功能,打造生產級后端。祝編碼愉快!

今晚就 push 到 GitHub,明天就能用 Fly.io 一鍵部署!??


原文鏈接: https://earthly.dev/blog/rust-api-rocket-diesel/

熱門推薦
一個賬號試用1000+ API
助力AI無縫鏈接物理世界 · 無需多次注冊
3000+提示詞助力AI大模型
和專業工程師共享工作效率翻倍的秘密
返回頂部
上一篇
使用Next.js構建API:最佳實踐與示例
下一篇
Rust + Axum + Diesel 構建高性能 Todo API 全程指南
国内精品久久久久影院日本,日本中文字幕视频,99久久精品99999久久,又粗又大又黄又硬又爽毛片
欧美mv日韩mv国产网站app| 国产精品国产三级国产a| 色综合天天综合狠狠| 日韩欧美电影在线| 午夜在线成人av| 欧美曰成人黄网| 亚洲国产va精品久久久不卡综合| 91偷拍与自偷拍精品| 自拍视频在线观看一区二区| 97精品视频在线观看自产线路二| 日本一区二区三区电影| 福利电影一区二区| 成人欧美一区二区三区白人| 91在线观看免费视频| 亚洲五月六月丁香激情| 日韩精品专区在线影院观看 | 国产黄人亚洲片| 欧美高清在线一区二区| 欧美制服丝袜第一页| 首页国产欧美日韩丝袜| 2024国产精品视频| av电影天堂一区二区在线| 一区二区三区欧美激情| 视频在线观看91| 久久久久成人黄色影片| 色婷婷精品大在线视频| 久久精品国产久精国产爱| 国产精品传媒在线| 欧美一卡在线观看| 成人av电影在线网| 久久99精品久久久| 亚洲一级二级在线| 国产亚洲精品bt天堂精选| 91在线无精精品入口| 久久www免费人成看片高清| 最新久久zyz资源站| 欧美一区二区三区视频| 一本到一区二区三区| 国产麻豆精品在线| 日韩国产欧美在线播放| 亚洲六月丁香色婷婷综合久久| 欧美一区二区高清| 欧美日韩精品一二三区| 91伊人久久大香线蕉| 国产成人一区在线| 麻豆一区二区99久久久久| 亚洲精品亚洲人成人网| 国产精品国产馆在线真实露脸| 精品国产乱码久久久久久浪潮 | 欧美一区二区三区视频| 色偷偷久久一区二区三区| 成人精品视频一区二区三区| 国产一区二区三区四区五区美女| 免费高清视频精品| 久久国产日韩欧美精品| 麻豆成人免费电影| 久久国产生活片100| 国产呦萝稀缺另类资源| 国产一区二区三区免费播放| 国产精品一区二区在线观看网站| 国产一区二区三区精品视频| 国产美女主播视频一区| 大白屁股一区二区视频| 一本久道中文字幕精品亚洲嫩| 成人av高清在线| 欧美日韩精品一区二区三区四区| 欧美中文字幕亚洲一区二区va在线 | 日韩限制级电影在线观看| 日韩精品一区二区三区中文精品| 日韩欧美一二三四区| 久久视频一区二区| 亚洲视频在线一区| 亚洲高清在线视频| 精品影院一区二区久久久| 丰满岳乱妇一区二区三区| 在线视频你懂得一区二区三区| 在线亚洲高清视频| 北条麻妃国产九九精品视频| 色综合久久99| 精品成人私密视频| 一区二区久久久| 狠狠网亚洲精品| 色哟哟亚洲精品| 欧美精品一区二区三区一线天视频 | 国产色产综合色产在线视频| 亚洲欧美在线另类| 久久精品国产第一区二区三区| 国产·精品毛片| 欧美一区二区日韩| 亚洲乱码国产乱码精品精的特点| 日本不卡视频一二三区| 91在线国内视频| 久久久九九九九| 日韩国产欧美在线播放| 99精品一区二区三区| 久久久久久一二三区| 秋霞成人午夜伦在线观看| 99久精品国产| 国产精品入口麻豆原神| 国产a区久久久| 久久精品亚洲麻豆av一区二区| 午夜av电影一区| 欧美在线观看一区二区| 成人免费小视频| av一区二区三区黑人| 国产精品色哟哟网站| www.日韩在线| 中文字幕一区二区三区四区| 成人av集中营| 亚洲免费观看视频| 在线观看欧美精品| 一区二区三区.www| 欧美在线观看视频在线| 亚洲国产日日夜夜| 欧美精品亚洲二区| 久久电影网站中文字幕| 久久网这里都是精品| 国产九色sp调教91| 国产精品丝袜久久久久久app| 久久99国产精品免费| 久久久777精品电影网影网| 国产麻豆精品一区二区| 亚洲欧美综合另类在线卡通| 91啦中文在线观看| 日本亚洲视频在线| 国产日韩精品视频一区| 91在线一区二区| 日韩欧美123| 精品一区二区影视| 久久精品视频一区| a级高清视频欧美日韩| 国产精品白丝在线| 色综合久久中文字幕综合网 | 国产欧美一区二区精品仙草咪| 国产一区二区三区免费在线观看| 久久久久久久久久久久久夜| 国产一区二区视频在线播放| 国产欧美一区二区三区在线老狼 | 色婷婷精品久久二区二区蜜臂av| 中文成人综合网| 在线观看一区日韩| 久久成人av少妇免费| 亚洲欧美日韩国产另类专区| 色琪琪一区二区三区亚洲区| 亚洲国产日日夜夜| 欧美成人三级电影在线| 91麻豆文化传媒在线观看| 狠狠色丁香久久婷婷综合丁香| 一区二区在线观看视频在线观看| 欧美另类videos死尸| 色综合天天综合网国产成人综合天| 青青草国产成人99久久| 亚洲第一狼人社区| 一色屋精品亚洲香蕉网站| 欧美大尺度电影在线| 欧美三电影在线| 91成人看片片| 91丨九色丨国产丨porny| 成人高清视频在线观看| 国产一区二区0| 午夜精彩视频在线观看不卡| 在线观看一区日韩| 成人激情小说网站| 久久超碰97中文字幕| 亚洲aaa精品| 午夜视频在线观看一区| 久久欧美一区二区| 日韩一级片在线播放| 国产精品中文欧美| 日韩精品福利网| 美女视频黄免费的久久| 亚洲卡通动漫在线| 国产精品不卡在线| 国产精品免费网站在线观看| 国产精品久久久久久久久搜平片 | 成人网在线播放| 国产激情视频一区二区在线观看| 亚洲国产日韩av| 一区二区激情视频| 一区二区三区精品在线| 国产精品久久网站| 中文字幕乱码亚洲精品一区| 国产精品成人免费 | 国产一区二区三区精品视频| 国产综合久久久久影院| 韩国欧美国产一区| 日韩av二区在线播放| 香蕉成人伊视频在线观看| 一区二区三区四区不卡视频| 亚洲狼人国产精品| 一区二区三区四区在线免费观看| 亚洲人被黑人高潮完整版| 亚洲欧美色图小说| 亚洲成人福利片| 日韩av中文在线观看| 免费看精品久久片| 国产一区中文字幕| 97久久超碰精品国产| 日本韩国欧美国产| 欧美一区二区三区在线看|