Skip to content

Latest commit

 

History

History
43 lines (34 loc) · 1.5 KB

README_cn.md

File metadata and controls

43 lines (34 loc) · 1.5 KB

图书管理系统

English | 中文

环境

  • Rust
  • MySQL 5.7

使用方法

  1. 执行 init.sql 创建数据库表。
  2. .env 设置环境变量 DATABASE_URLJWT_SECRET
  3. 执行 run.sh

API

用户

  • /user/register
  • /user/login

图书

需要在 header 中设置 JWT Authorization: Bearer <JWT>

  • /book/create
  • /book/search
  • /book/update
  • /book/delete

练习

用 Redis 作为缓存

  1. 添加 redis 到 Cargo.toml,需要开启 feature tokio-comp

必须使用 async,因为如果不用 async系统线程会在这一行代码执行时阻塞,在执行完成前不会执行其他任务。

  1. 在 src/error.rs 添加 redis::RedisError
    #[error("redis_error: {0}")]
    Redis(#[from] redis::RedisError),

如果加了 #[from]thiserror 会自动生成 impl From<redis::RedisError> for CustomError。在错误类型是CustomResult<T>时,你可以用 ?.map_err(Into::into)? 返回错误。
如果不加 #[from],你需要自己转换错误类型 .map_err(|e| CustomError::Redis(e)).map_err(CustomError::Redis)

  1. 阅读代码 redis/examples
  2. 编写缓存代码。

全局 404 处理器

  1. src/bin/server.rs 中,添加 Global-404-handler