From cc7b1d42d85239eb1f4f47027af30feb59410631 Mon Sep 17 00:00:00 2001 From: tprevot Date: Thu, 13 Aug 2026 16:32:15 +0200 Subject: [PATCH] fix(api): missing trailing / route for environment-document --- Cargo.toml | 2 +- src/routes/mod.rs | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index f985108..f00df18 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,7 +9,7 @@ license = "BSD-3-Clause" axum = { version = "0.8", features = ["macros"] } tokio = { version = "1", features = ["full"] } tower = "0.5" -tower-http = { version = "0.6", features = ["compression-gzip", "cors", "trace"] } +tower-http = { version = "0.6", features = ["compression-gzip", "cors", "trace", "normalize-path"] } reqwest = { version = "0.13", features = ["json", "gzip"] } serde = { version = "1", features = ["derive"] } serde_json = "1" diff --git a/src/routes/mod.rs b/src/routes/mod.rs index c601d5c..5693087 100644 --- a/src/routes/mod.rs +++ b/src/routes/mod.rs @@ -11,7 +11,10 @@ use axum::{ routing::{get, post}, }; use std::sync::Arc; -use tower_http::{compression::CompressionLayer, cors::CorsLayer, trace::TraceLayer}; +use tower_http::{ + compression::CompressionLayer, cors::CorsLayer, normalize_path::NormalizePathLayer, + trace::TraceLayer, +}; pub fn create_router(settings: AppSettings) -> (Router, Arc) { let environment_service = Arc::new(EnvironmentService::new(settings)); @@ -24,18 +27,16 @@ pub fn create_router(settings: AppSettings) -> (Router, Arc) .route("/proxy/health/liveness", get(health::liveness_check)) // Flags routes (with and without trailing slash) .route("/api/v1/flags", get(flags::get_flags)) - .route("/api/v1/flags/", get(flags::get_flags)) // Identities routes (with and without trailing slash) .route("/api/v1/identities", get(identities::get_identities)) - .route("/api/v1/identities/", get(identities::get_identities)) .route("/api/v1/identities", post(identities::post_identities)) - .route("/api/v1/identities/", post(identities::post_identities)) // Environment document route .route( "/api/v1/environment-document", get(environment_document::get_environment_document), ) // Middleware layers + .layer(NormalizePathLayer::trim_trailing_slash()) .layer(CompressionLayer::new()) .layer(CorsLayer::permissive()) .layer(TraceLayer::new_for_http())