#header #middleware #router #x-version #extract-version

version_middleware

Custom extractor for Rust Axum to extract the version from an HTTP header x-version

1 unstable release

Uses new Rust 2024

new 0.1.2 Apr 16, 2025

#1531 in HTTP server

Custom license

9KB
60 lines

Rust Axum Middleware - Extract Version from Header

Custom extractor for Rust Axum to extract the version from an HTTP header x-version. Works ONLY with Rust Axum.

Usage

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

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

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.

For any bug, you can take a look to our active issues and open, if necessary, a new issue.

Dependencies

~6–12MB
~121K SLoC