A Rust Axum RESTful API template.
- Basic CRUD RESTful API
- Request validation
- Authentication & Authorization
- Database connection & migration
- Custom Extractor
- File Uploading
Start PostgreSQL DB from docker
docker compose up -dCreate .env file from .env.example, then fill the necessary environment variables
cp .env.example .envRun database migrations
# Install sqlx-cli (Optional) - dont run if already installed
cargo install sqlx-cli
# Construct DATABASE_URL from .env file
# This is required for sqlx
export $(<.env grep -v "^#" | xargs)
export DATABASE_URL="postgresql://$PG_DATABASE_HOST:$PG_DATABASE_PORT/$PG_DATABASE_DB?user=$PG_DATABASE_USERNAME&password=$PG_DATABASE_PASSWORD"
# Run migrations
sqlx migrate run
# Or
sh scripts/migrate.shStart API process
cargo run# All docker dependencies are listed in docker-compose.yml
# Start docker compose
docker compose up -d
# Stop docker compose
docker compose down# Install sqlx-cli before run
cargo install sqlx-cli
# Create reversible migration (-r flag)
sqlx migrate add -r "<name>"
# Run migrations
sqlx migrate run
# Run migrations
sqlx migrate revert# Run api process in development mode
cargo run
# Build source code for deployment
cargo build --release
# Build docker image
docker build . -t keter-rest:v1
# Start container services
docker compose -f staging.docker-compose.yml up -d
# Stop container services
docker compose -f staging.docker-compose.yml downThis project is under the Apache License 2.0