Shameless plug, we've built hurl [1] to add some syntactic sugar over curl, with plain text. For example, you can write a text file post.hurl:
POST https://api.ctl.io/v2/authentication/login
{
"username": "YOUR.USERNAME",
"password": "YOUR.PASSWORD"
}
and it will send the same POST request with a json body: hurl post.hurl
You can add asserts on the response too: POST https://api.ctl.io/v2/authentication/login
{
"username": "YOUR.USERNAME",
"password": "YOUR.PASSWORD"
}
HTTP/1.0 200
[Asserts]
jsonpath "$.status" == "LOGGED"
Under the hood, we use libcurl and a Rust binding. The HTTP engine is curl because curl is awesome!