From a6c75098bea6a88d75fb5d092fea6ea8bcd154db Mon Sep 17 00:00:00 2001 From: Zyy Date: Tue, 7 Jul 2026 14:00:04 +0800 Subject: [PATCH] fix: allow large OpenAI request bodies Co-authored-by: Codex --- backend/src/proxy/openai/routes.rs | 2 ++ .../tests/proxy/openai/responses_routes.rs | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/backend/src/proxy/openai/routes.rs b/backend/src/proxy/openai/routes.rs index 42409a032..8c36db1bb 100644 --- a/backend/src/proxy/openai/routes.rs +++ b/backend/src/proxy/openai/routes.rs @@ -1,6 +1,7 @@ //! OpenAI 兼容 API 路由。 use axum::{ + extract::DefaultBodyLimit, routing::{get, post}, Router, }; @@ -22,4 +23,5 @@ pub fn router() -> Router { .route("/v1/models/catalog", get(model_catalog)) .route("/v1/models/{model_id}", get(model_detail)) .route("/v1/models/{model_id}/info", get(model_info)) + .layer(DefaultBodyLimit::disable()) } diff --git a/backend/tests/proxy/openai/responses_routes.rs b/backend/tests/proxy/openai/responses_routes.rs index ae7efcb85..6ce88a396 100644 --- a/backend/tests/proxy/openai/responses_routes.rs +++ b/backend/tests/proxy/openai/responses_routes.rs @@ -59,6 +59,30 @@ async fn responses_route_should_reject_unknown_models_with_openai_error() { ); } +#[tokio::test] +async fn responses_route_should_accept_body_larger_than_axum_default_limit() { + let (app, api_key, _dir) = test_app_with_client_api_key().await; + let large_input = "x".repeat(3 * 1024 * 1024); + let body = serde_json::json!({ + "model": "unknown-model", + "input": large_input, + }) + .to_string(); + let response = app + .oneshot( + Request::builder() + .method("POST") + .uri("/v1/responses") + .header("authorization", format!("Bearer {api_key}")) + .header("content-type", "application/json") + .body(Body::from(body)) + .unwrap(), + ) + .await + .unwrap(); + assert_eq!(response.status(), StatusCode::NOT_FOUND); +} + #[tokio::test] async fn responses_route_should_terminate_generated_stream_errors_with_done_marker() { let (app, api_key, _dir) = test_app_with_client_api_key().await;