ByteNoteByteNote
编号由客户端自己带上来
字

字节笔记本

2026年10月7日 · 约 2 分钟读完

编号由客户端自己带上来

API中转
¥120

项目名 rust-web-api,edition 2021。依赖是 actix-web 4.4、serde 带 derive、serde_json,以及 tokio 的 full 特性。入口宏是 actix_web::main。待办有 id、title、completed。状态是包在 Mutex 里的向量,放进 web::Data。

三条路由都在本机八百零

绑定地址是 127.0.0.1:8080。启动打印的是 http://localhost:8080。GET /todos 把向量编成 JSON 返回 200。POST 同一路径,把 JSON 解出来推进去,返回 201 和最后一项。GET /todos/{id} 按编号查找,找到返回 200,找不到 NotFound().finish(),没有 JSON 说明。

创建不会另发编号。示例请求自己带了 id 为 1、标题 Learn Rust、completed 为 false。再发一次相同编号,向量里会有两条。按编号读取时 find 碰到的是第一条。

创建不会另外分配编号

Cargo.toml 和 main.rs 写在同一段里。要运行得先 cargo new,再把依赖和源码拆开,然后 cargo run。tokio 列在依赖里,这段处理函数没有直接用它。运行时来自入口宏。

锁是 lock().unwrap()。没有在拿着锁的时候再等待别的异步操作,守卫会在函数结束时放开。若锁中毒,unwrap 会让这个工作线程恐慌,而不是返回 500。

找不到时响应体是空的

列表和创建共用一个路径,靠方法区分。读取多一段路径参数,类型是 u32。编号不是数字时,框架会拒绝这段路径,不会进到 find。

内存向量在进程里。重启之后示例里的那条 Learn Rust 不会还在。对话没有写数据库。

相关文章

分享: