A Rusty Rocket fuelled with Diesel and secured by JWT
Last updated Jan 19, 2026
75
Stars
15
Forks
8
Issues
0
Stars/day
Attention Score
19
Language breakdown
No language data available.
▸ Files
click to expand
README
Rocket REST API with JWT
A Rusty Rocket 🚀 fuelled with Diesel 🛢 and secured by JWT 🔐
Require
You can build and run app from source:
Or using DockerHow to run
Manual
- Install Rust nightly (Thanks for Rustup 1.20!):
rustup install nightly - Set Rust Nightly to project: Go to the root of the project, open cmd/terminal and run
rustup override set nightly - Rename
secret.key.sampletosecret.keyor create your own key by runninghead -c16 /dev/urandom > secret.keyin command line (Linux/UNIX only) and copy to/srcfolder - Create a database in postgres cli or pgAdmin tool
- Rename
Rocket.toml.sampletoRocket.tomland update the database connection string inurlkey. - Build with release profile:
cargo build --release - Run release binary in command line/terminal. On Windows:
target/release/addressbookrestapi.exe, on *UNIX:target/release/addressbookrestapi - Enjoy! 😄
Docker
- Enter into project directory and run
docker-compose up - Enjoy! 😄
APIs
Address: localhost:8000
POST /api/auth/signup: Signup
- Request body:
{
"username": string,
"email": string,
"password": string // a raw password
}
- Response
- 200 OK
{
"message": "signup successfully",
"data": ""
}
- 400 Bad Request
{
"message": "error when signing up, please try again",
"data": ""
}
POST /api/auth/login: Login
- Request body:
{
"usernameoremail": string,
"password": string // a raw password
}
- Response
- 200 OK
{
"message": "login successfully",
"data": {
"token": string // bearer token
}
}
- 400 Bad Request
{
"message": "wrong username or password, please try again",
"data": ""
}
GET /api/address-book: Get all people information
- Header:
- Authorization: bearer \{
"message": "ok",
"data": [
{
"id": int32,
"name": string,
"gender": boolean, // true for male, false for female
"age": int32,
"address": string,
"phone": string,
"email": string
}
]
}
GET /api/address-book/{id}: Get person information by id
- Param path:
- id: int32
- Header:
- Authorization: bearer \{
"message": "ok",
"data": {
"id": int32,
"name": string,
"gender": boolean, // true for male, false for female
"age": int32,
"address": string,
"phone": string,
"email": string
}
}
- 404 Not Found
{
"message": "person with id {id} not found",
"data": ""
}
GET /api/address-book/{query}: Search for person information by keyword
- Param path:
- query: string
- Header:
- Authorization: bearer \{
"message": "ok",
"data": [
{
"id": int32,
"name": string,
"gender": boolean, // true for male, false for female
"age": int32,
"address": string,
"phone": string,
"email": string
}
]
}
POST /api/address-book: Add person information
- Header:
- Authorization: bearer \{
"name": string,
"gender": boolean, // true for male, false for female
"age": int32,
"address": string,
"phone": string,
"email": string
}
- Response
- 201 Created
{
"message": "ok",
"data": ""
}
- 500 Internal Server Error
{
"message": "can not insert data",
"data": ""
}
PUT /api/address-book/{id}: Update person information by id
- Param path:
- id: int32
- Header:
- Authorization: bearer \{
"name": string,
"gender": boolean, // true for male, false for female
"age": int32,
"address": string,
"phone": string,
"email": string
}
- Response
- 200 OK
{
"message": "ok",
"data": ""
}
- 500 Internal Server Error
{
"message": "can not update data",
"data": ""
}
DELETE /api/address-book/{id}: Delete person information by id
- Param path:
- id: int32
- Header:
- Authorization: bearer \{
"message": "ok",
"data": ""
}
- 500 Internal Server Error
{
"message": "can not delete data",
"data": ""
}
Errors:
- Invalid or missing token - Status code: 401 Unauthorized - Response:{
"message": "invalid token, please login again",
"data": ""
}🔗 More in this category