version_middleware 0.2.1

Custom extractor for Rust Axum to extract the version from an HTTP header X-Version.
Documentation
# Rust Axum Middleware - Extract Version from Header

Custom extractor for [Rust](https://www.rust-lang.org/) [Axum](https://docs.rs/axum/latest/axum/) to extract the version from an HTTP header `X-Version`.
Works **ONLY** with [Rust](https://www.rust-lang.org/) [Axum](https://docs.rs/axum/latest/axum/).

## Usage

```rust
use axum::{routing::get, Router};
use version_middleware::ExtractVersion;

async fn handler(ExtractVersion(version): ExtractVersion) {
    println!("Version: {:?}", version);
}

let app = Router::<()>::new().route("/foo", get(handler));
```

The extracted value is :

- `trim` to clean extra spaces, before and after ;
- `lowercase` to standardize and make it more resilient to implementation errors.

## Samples

### Extract version if the header is explicitly set

```shell
curl -H "X-Version: v1.0.0" http://api.nebeto.xyz/foo
curl -H "x-version: preView" http://api.nebeto.xyz/foo
curl -H "X-VeRSion: latest" http://api.nebeto.xyz/foo
```

Will give respectively `v1.0.0`, `preview` and `latest`.

### Extract version if the header is missing

```shell
curl http://api.nebeto.xyz/foo
```

Will give by default `latest`.

## Contact

For any question or feature suggestion, you can take a look and open, if necessary, a new [discussion](https://github.com/nebetoxyz/rust-version-middleware--lib/discussions).

For any bug, you can take a look to our active issues and open, if necessary, a new [issue](https://github.com/nebetoxyz/rust-version-middleware--lib/issues).