hurl usage example
Introduction
Hurl is a command-line tool that runs HTTP requests defined in a simple plain text format. It can chain requests, capture values, and evaluate queries on headers and body response. Hurl is versatile and can be used for fetching data, testing HTTP sessions, and testing XML/JSON APIs.
Usage
Here is an example of a simple GET request:
# Get home:
GET <https://example.org>
HTTP/1.1 200
[Captures]
csrf_token: xpath "string(//meta[@name='_csrf_token']/@content)"
# Do login!
POST <https://example.org/login?user=toto&password=1234>
X-CSRF-TOKEN: {{csrf_token}}
HTTP/1.1 302
Chaining multiple requests is easy:
GET <https://example.org/api/health>
GET <https://example.org/api/step1>
GET <https://example.org/api/step2>
GET <https://example.org/api/step3>
Hurl can run HTTP requests and test HTTP responses. Different types of queries and predicates are supported, from XPath and JSONPath on body response to assert on status code and response headers.
Here is an example of testing an HTML response:
GET <https://example.org>
HTTP/1.1 200
[Asserts]
xpath "normalize-space(//head/title)" == "Hello world!"
Hurl can even be used to test SOAP APIs:
POST <https://example.org/InStock>
Content-Type: application/soap+xml; charset=utf-8
SOAPAction: "<http://www.w3.org/2003/05/soap-envelope>"
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="<http://www.w3.org/2003/05/soap-envelope>" xmlns:m="<https://example.org>">
<soap:Header></soap:Header>
<soap:Body>
<m:GetStockPrice>
<m:StockName>GOOG</m:StockName>
</m:GetStockPrice>
</soap:Body>
</soap:Envelope>
HTTP/1.1 200
Hurl can also be used to performance test HTTP endpoints:
GET <https://example.org/api/performance>
?users={{100}}
&requests={{500}}
&duration={{10s}}
&timeout={{1s}}
HTTP/1.1 200
And it can test response bytes:
GET <https://example.org/data.tar.gz>
HTTP/1.0 200
[Asserts]
sha256 == hex,039058c6f2c0cb492c533b0a4d14ef77cc0f78abccced5287d84a1a2011cfb81;
Hurl is a lightweight binary written in Rust. Under the hood, Hurl HTTP engine is powered by libcurl, one of the most powerful and reliable file transfer libraries. With its text file format, Hurl adds syntactic sugar to run and test HTTP requests, but it’s still the curl that we love.
Lastly, you can use Hurl to provide feedback:
POST <https://hurl.dev/api/feedback>
{
"name": "John Doe",
"feedback": "Hurl is awesome!"
}
HTTP/1.1 200
https://hurl.dev/
https://github.com/Orange-OpenSource/hurl
https://hurl.dev/docs/manual.html
https://blog.logrocket.com/exploring-hurl-postman-alternative/