diff --git a/crates/nu-command/src/network/http/client.rs b/crates/nu-command/src/network/http/client.rs index 8e468024de..6450a870fe 100644 --- a/crates/nu-command/src/network/http/client.rs +++ b/crates/nu-command/src/network/http/client.rs @@ -223,6 +223,10 @@ pub fn send_request( }; send_cancellable_request(&request_url, Box::new(request_fn), ctrl_c) } + Value::List { .. } if body_type == BodyType::Json => { + let data = value_to_json_value(&body)?; + send_cancellable_request(&request_url, Box::new(|| request.send_json(data)), ctrl_c) + } _ => Err(ShellErrorOrRequestError::ShellError(ShellError::IOError( "unsupported body input".into(), ))), diff --git a/crates/nu-command/tests/commands/network/http/post.rs b/crates/nu-command/tests/commands/network/http/post.rs index 820ee19aad..7bc1b4d45c 100644 --- a/crates/nu-command/tests/commands/network/http/post.rs +++ b/crates/nu-command/tests/commands/network/http/post.rs @@ -94,3 +94,21 @@ fn http_post_json_is_success() { mock.assert(); assert!(actual.out.is_empty()) } + +#[test] +fn http_post_json_list_is_success() { + let mut server = Server::new(); + + let mock = server + .mock("POST", "/") + .match_body(r#"[{"foo":"bar"}]"#) + .create(); + + let actual = nu!(format!( + r#"http post -t 'application/json' {url} [{{foo: "bar"}}]"#, + url = server.url() + )); + + mock.assert(); + assert!(actual.out.is_empty()) +}