diff --git a/integrations/axum/src/extract.rs b/integrations/axum/src/extract.rs index 2188b2fd..4d759ff3 100644 --- a/integrations/axum/src/extract.rs +++ b/integrations/axum/src/extract.rs @@ -27,6 +27,7 @@ pub mod rejection { use async_graphql::ParseRequestError; use axum::body::Body; use axum::response::IntoResponse; + use http::StatusCode; /// Rejection used for [`GraphQLRequest`](GraphQLRequest). pub struct GraphQLRejection(pub ParseRequestError); @@ -36,7 +37,16 @@ pub mod rejection { type BodyError = ::Error; fn into_response(self) -> http::Response { - todo!() + match self.0 { + ParseRequestError::PayloadTooLarge => http::Response::builder() + .status(StatusCode::PAYLOAD_TOO_LARGE) + .body(Body::empty()) + .unwrap(), + bad_request => http::Response::builder() + .status(StatusCode::BAD_REQUEST) + .body(Body::from(format!("{:?}", bad_request))) + .unwrap(), + } } }