diff --git a/lambda-http/src/request.rs b/lambda-http/src/request.rs index 88740dd1..de61f726 100644 --- a/lambda-http/src/request.rs +++ b/lambda-http/src/request.rs @@ -317,7 +317,7 @@ where } } - deserializer.deserialize_map(HeaderVisitor) + Ok(deserializer.deserialize_map(HeaderVisitor).unwrap_or_default()) } /// Deserialize a map of Cow<'_, str> => Cow<'_, str> into an http::HeaderMap @@ -868,4 +868,20 @@ mod tests { } ) } + + #[test] + fn deserialize_null_multi_value_headers() { + #[derive(Debug, PartialEq, Deserialize)] + struct Test { + #[serde(deserialize_with = "deserialize_multi_value_headers")] + multi_value_headers: http::HeaderMap, + } + + assert_eq!( + serde_json::from_str::(r#"{"multi_value_headers":null}"#).expect("failed to deserialize"), + Test { + multi_value_headers: http::HeaderMap::new() + } + ) + } }