diff --git a/codegen-server/src/main/kotlin/software/amazon/smithy/rust/codegen/server/smithy/protocols/ServerHttpProtocolGenerator.kt b/codegen-server/src/main/kotlin/software/amazon/smithy/rust/codegen/server/smithy/protocols/ServerHttpProtocolGenerator.kt index 219b2dc4e64d8a23ccf6ceb7f7b08aa18cb625bf..82f43e6b9f08275f10d66ce7ba197add12895a2f 100644 --- a/codegen-server/src/main/kotlin/software/amazon/smithy/rust/codegen/server/smithy/protocols/ServerHttpProtocolGenerator.kt +++ b/codegen-server/src/main/kotlin/software/amazon/smithy/rust/codegen/server/smithy/protocols/ServerHttpProtocolGenerator.kt @@ -138,7 +138,6 @@ private class ServerHttpProtocolImplGenerator( } else { """ async fn from_request(req: &mut #{Axum}::extract::RequestParts) -> Result { - #{SmithyHttpServer}::protocols::check_json_content_type(req)?; Ok($inputName(#{parse_request}(req).await?)) } """.trimIndent() @@ -481,7 +480,10 @@ private class ServerHttpProtocolImplGenerator( """ let body = request.take_body().ok_or(#{SmithyHttpServer}::rejection::BodyAlreadyExtracted)?; let bytes = #{Hyper}::body::to_bytes(body).await?; - input = #{parser}(bytes.as_ref(), input)?; + if !bytes.is_empty() { + #{SmithyHttpServer}::protocols::check_json_content_type(request)?; + input = #{parser}(bytes.as_ref(), input)?; + } """, *codegenScope, "parser" to parser,