How to Use Hurl Command
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
Summary
Hurl is a command-line tool for running HTTP requests defined in a plain text format, supporting chaining requests, capturing values, and evaluating queries on headers and body response. It can be used for fetching data, testing HTTP sessions, and testing XML/JSON APIs, and supports different types of queries and predicates. Hurl is also lightweight and written in Rust, powered by libcurl, and can be used to provide feedback.