Skip to content

How to Use Hurl Command

homepage-banner

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.

Leave a message