Skip to content

Latest commit

 

History

History
43 lines (34 loc) · 1.46 KB

README.md

File metadata and controls

43 lines (34 loc) · 1.46 KB

Book management

English | 中文

Required

  • Rust
  • MySQL 5.7

Usage

  1. Execute init.sql to create tables.
  2. Set environment variable DATABASE_URL and JWT_SECRET in .env.
  3. Execute run.sh.

API

user

  • /user/register
  • /user/login

book

JWT should be provided in header. Authorization: Bearer <JWT>

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

Practice

Use Redis as cache

  1. Add redis with feature tokio-comp to Cargo.toml

async is necessary, because if you don't use async, the system thread will block when the command is executing, and it will not handle other tasks.

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

With #[from], thiserror will generate impl From<redis::RedisError> for CustomError automatically, and you can return error with ? or .map_err(Into::into)? when the return type is CustomResult<T>.
Without #[from], you need to convert error by yourself .map_err(|e| CustomError::Redis(e)) or .map_err(CustomError::Redis)

  1. Read code in redis/examples.
  2. Write your cache code.

Global 404 handler

  1. Add Global-404-handler in src/bin/server.rs.