From 359da67e9b994f0d5eafa718beab0150f8b6a4d1 Mon Sep 17 00:00:00 2001 From: Dominik Csapak Date: Thu, 24 Aug 2023 12:22:31 +0200 Subject: [PATCH] rest-server: accept empty body as valid parameters technically an empty string is not valid json, but when sending an api request without any parameters, treating the empty body as an empty parameter hash instead of an error, makes the the api more robust for clients Signed-off-by: Dominik Csapak --- proxmox-rest-server/src/rest.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/proxmox-rest-server/src/rest.rs b/proxmox-rest-server/src/rest.rs index 0ee9fabc..2ccd4d51 100644 --- a/proxmox-rest-server/src/rest.rs +++ b/proxmox-rest-server/src/rest.rs @@ -349,7 +349,12 @@ async fn get_request_parameters( std::str::from_utf8(&body).map_err(|err| format_err!("Request body not uft8: {}", err))?; if is_json { - let mut params: Value = serde_json::from_str(utf8_data)?; + // treat empty body as empty paramater hash + let mut params: Value = if utf8_data.is_empty() { + Value::Object(serde_json::Map::new()) + } else { + serde_json::from_str(utf8_data)? + }; for (k, v) in uri_param { if let Some((_optional, prop_schema)) = param_schema.lookup(&k) { params[&k] = prop_schema.parse_simple_value(&v)?;