From c5db90f37aca7d4749910588212f7ad4cf237d94 Mon Sep 17 00:00:00 2001 From: kdletters Date: Tue, 21 Apr 2026 01:32:23 +0800 Subject: [PATCH] build: add route version response header --- backend-rewrite-tasklist/01_M0_M2_FOUNDATION_AND_AUTH.md | 3 ++- server-rs/apps/api-server/README.md | 3 ++- server-rs/apps/api-server/src/response_headers.rs | 9 ++++++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/backend-rewrite-tasklist/01_M0_M2_FOUNDATION_AND_AUTH.md b/backend-rewrite-tasklist/01_M0_M2_FOUNDATION_AND_AUTH.md index d98e0b5e..3e1453bd 100644 --- a/backend-rewrite-tasklist/01_M0_M2_FOUNDATION_AND_AUTH.md +++ b/backend-rewrite-tasklist/01_M0_M2_FOUNDATION_AND_AUTH.md @@ -106,7 +106,8 @@ 交付物:[../server-rs/apps/api-server/src/response_headers.rs](../server-rs/apps/api-server/src/response_headers.rs)、[../server-rs/apps/api-server/src/app.rs](../server-rs/apps/api-server/src/app.rs) - [x] 接入 `x-api-version` 交付物:[../server-rs/apps/api-server/src/response_headers.rs](../server-rs/apps/api-server/src/response_headers.rs) -- [ ] 接入 `x-route-version` +- [x] 接入 `x-route-version` + 交付物:[../server-rs/apps/api-server/src/response_headers.rs](../server-rs/apps/api-server/src/response_headers.rs) - [ ] 接入 `x-response-time-ms` - [ ] 实现 `/healthz` diff --git a/server-rs/apps/api-server/README.md b/server-rs/apps/api-server/README.md index 51dddaf7..4f7eba34 100644 --- a/server-rs/apps/api-server/README.md +++ b/server-rs/apps/api-server/README.md @@ -61,7 +61,8 @@ 1. 所有响应都会回写 `x-request-id`。 2. 所有响应都会回写固定的 `x-api-version`,当前值与 body `meta.apiVersion` 保持一致。 -3. `x-route-version` 与 `x-response-time-ms` 仍留在后续独立任务中补齐。 +3. 所有响应都会回写 `x-route-version`,当前阶段默认与 `x-api-version` 保持一致,后续再按路由粒度细分。 +4. `x-response-time-ms` 仍留在后续独立任务中补齐。 ## 3. 边界约束 diff --git a/server-rs/apps/api-server/src/response_headers.rs b/server-rs/apps/api-server/src/response_headers.rs index ba5dc214..fceb8f12 100644 --- a/server-rs/apps/api-server/src/response_headers.rs +++ b/server-rs/apps/api-server/src/response_headers.rs @@ -11,6 +11,7 @@ use crate::{ }; pub const API_VERSION_HEADER: &str = "x-api-version"; +pub const ROUTE_VERSION_HEADER: &str = "x-route-version"; pub async fn propagate_request_id_header(request: Request, next: Next) -> Response { let request_id = resolve_request_id(&request); @@ -27,7 +28,13 @@ pub async fn propagate_request_id_header(request: Request, next: Next) -> Respon if let Ok(header_value) = HeaderValue::from_str(API_VERSION) { response .headers_mut() - .insert(HeaderName::from_static(API_VERSION_HEADER), header_value); + .insert( + HeaderName::from_static(API_VERSION_HEADER), + header_value.clone(), + ); + response + .headers_mut() + .insert(HeaderName::from_static(ROUTE_VERSION_HEADER), header_value); } response