Minimalistic HTTP Client Test Utilities.
get/post/put/patch/delete
and the response body...
apis.```rs use anyhow::Result; use serde_json::{json, Value};
async fn testsimplebase() -> httpctest::Result<()> { // Create a new httpc test client with a base URL (will be prefixed for all calls) // The client will have a cookiestore. let hc = httpctest::newclient("http://localhost:8080")?;
//// do_get, do_post, do_put, do_patch, do_delete return a httpc_test::Response
// Simple do_get
let res = hc.do_get("/hello").await?; // httpc_test::Response
// Pretty print the result (status, headers, response cookies, client cookies, body)
res.print().await?;
let auth_token = res.res_cookie_value("auth-token"); // Option<String>
let content_type = res.header("content_type"); // Option<&String>
// Another do_get
let res = hc.do_get("/context.rs").await?;
// Pretty print but do not print the body
res.print_no_body().await?;
//// get, post, put, patch, delete return a DeserializeOwned
// a get (return a Deserialized)
let json_value = hc.get::<Value>("/api/tickets").await?;
// Another post (with the cookie store updated from the login request above )
let res = hc
.do_post(
"/api/tickets",
json!({
"subject": "ticket 01"
}),
)
.await?;
res.print().await?;
// Post with text content and specific content type
let res = hc
.do_post(
"/api/tickets",
(r#"{
"subject": "ticket bb"
}
"#,
"application/json"),
)
.await?;
res.print().await?;
// Same woth do_patch, do_put.
Ok(())
} ```