Personal example and learning exercise for an Axum REST API.
Usage:
Rust Axum REST API example.
Usage: axum-example [OPTIONS]
Options:
--host <HOST> Optional host IP to listen to (for example "0.0.0.0")
-l, --log <LEVEL> Log level to use [possible values: trace, debug, info, warn, error]
-p, --port <PORT> Optional port number to use (default is 3000)
-v, --version Print version info and exit
-h, --help Print help (see more with '--help')
Run locally:
cargo run --release
# Specify log level
cargo run --release -- --log error
# log level from env
RUST_LOG=debug cargo run --release
Build Docker image and run container:
./run.sh
Start the server first and then in another terminal (tab):
./test-routes.sh
Or manually:
curl -s http://127.0.0.1:3000 | jq .
curl -s http://127.0.0.1:3000/version | jq .
curl -s http://127.0.0.1:3000/item?name=akseli | jq .
curl -s http://127.0.0.1:3000/item?name=pizzalover9000 | jq .
curl -s -H "Content-Type: application/json" -d '{"name":"test"}' http://127.0.0.1:3000/items | jq .
Uses utoipa to generate OpenAPI documentation and UIs.
Swagger UI is available at /doc
, Redoc at /redoc
, and RapiDoc at /rapidoc
.
The raw JSON can be seen from /api-docs/openapi.json
.