https://github.com/swiftsoftwaregroup/swift-api-rest-rs
REST Web API using Rust and Actix Web
https://github.com/swiftsoftwaregroup/swift-api-rest-rs
Last synced: 5 months ago
JSON representation
REST Web API using Rust and Actix Web
- Host: GitHub
- URL: https://github.com/swiftsoftwaregroup/swift-api-rest-rs
- Owner: swiftsoftwaregroup
- License: apache-2.0
- Created: 2024-07-26T20:12:34.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2025-02-13T16:39:05.000Z (over 1 year ago)
- Last Synced: 2025-08-19T03:35:56.984Z (11 months ago)
- Language: Rust
- Size: 508 KB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# swift-api-rest-rs
This project implements a simple API just to illustrate how one would go about implementing a REST API using [Actix Web](https://actix.rs/) and [Rust](https://www.rust-lang.org/).
## Setup
* [Setup for macOS](./docs/setup-macos.md)
## Run
```bash
source configure.sh
cargo run
# or
cargo watch -x check -x run
# or
./watch.sh
```
Browse the docs and test the API via the Swagger UI:
```bash
open http://localhost:8001/docs
```

Browse the docs using Redoc. This is an alternative to the Swagger UI:
```bash
open http://localhost:8001/redoc
```

## Updating the code
Configure project:
```bash
source configure.sh
```
Open the project in Visual Studio Code:
```bash
code .
```
## Development
### Code Formatting & Linting
Run `rustfmt` formatter:
```bash
# check
cargo fmt --all -- --check
# fix
cargo fmt --all
```
Run `clippy` linter:
```bash
# check
cargo clippy -- --deny warnings
# fix
cargo clippy --fix
```
### Test
Run tests:
```bash
cargo test
```
Generate test coverage report:
```bash
./coverage.sh
# or
cargo tarpaulin --skip-clean --ignore-tests --out Html --output-dir coverage
# open coverage report
open coverage/tarpaulin-report.html
```
### Build
```bash
cargo build
```
### Database Management
Setup DB migrations:
```bash
diesel setup
```
Generate a new DB migration:
```bash
diesel migration generate create_books
```
Apply DB migrations:
```bash
diesel migration run
```
## Run in Podman / Docker
> In order to do this you will need Podman. See [Setup Podman on macOS](./docs/setup-podman-macos.md) for details.
Rebuild container image and start container:
```bash
./scripts/podman.sh
```
Delete container and image:
```bash
./scripts/podman-delete.sh
```
## How to create a new project
```bash
# create new project
cargo init
# add packages
cargo add actix-web dotenv
cargo add diesel --features sqlite,r2d2
cargo add serde --features derive
cargo add serde_json
cargo add chrono --features serde
cargo add utoipa --features actix_extras
cargo add utoipa-swagger-ui --features actix-web
cargo add diesel_migrations
```
Install tools :
```bash
# Diesel CLI
cargo install diesel_cli --no-default-features --features sqlite
# Watch
cargo install cargo-watch
# Test Coverage
cargo install cargo-tarpaulin
```