https://hurl.dev/index.html
[logo-light] [logo-dark]
Home
Docs
GitHub
Search
Menu
Getting Started
* Man Page
* Installation
* Samples
* Running Tests
* Frequently Asked Questions
File Format
* Hurl File
* Grammar
* Entry
* Request
* Response
* Capturing Response
* Asserting Response
* Templates
Tutorial
* Your First Hurl File
* Adding Asserts
* Chaining Requests
* Debug Tips
* Captures
* Security
* CI/CD Integration
Resources
* License
* GitHub
Getting Started
* Man Page
* Installation
* Samples
* Running Tests
* Frequently Asked Questions
File Format
* Hurl File
* Grammar
* Entry
* Request
* Response
* Capturing Response
* Asserting Response
* Templates
Tutorial
* Your First Hurl File
* Adding Asserts
* Chaining Requests
* Debug Tips
* Captures
* Security
* CI/CD Integration
Resources
* License
* GitHub
[logo-light] [logo-dark]
What's Hurl?
Hurl is a command line tool that runs HTTP requests defined in a
simple plain text format.
It can perform requests, capture values and evaluate queries on
headers and body response. Hurl is very versatile: it can be used for
both fetching data and testing HTTP sessions.
# Get home:
GET https://example.net
HTTP/1.1 200
[Captures]
csrf_token: xpath "string(//meta[@name='_csrf_token']/@content)"
# Do login!
POST https://example.net/login?user=toto&password=1234
X-CSRF-TOKEN: {{csrf_token}}
HTTP/1.1 302
Chaining multiple requests is easy:
GET https://api.example.net/health
GET https://api.example.net/step1
GET https://api.example.net/step2
GET https://api.example.net/step3
Also an HTTP Test Tool
Hurl can run HTTP requests but can also be used to 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.
It is well adapted for REST / JSON apis
POST https://api.example.net/tests
{
"id": "456",
"evaluate": true
}
HTTP/1.1 200
[Asserts]
jsonpath "$.status" == "RUNNING" # Check the status code
jsonpath "$.tests" count == 25 # Check the number of items
HTML content
GET https://example.net
HTTP/1.1 200
[Asserts]
xpath "normalize-space(//head/title)" == "Hello world!"
and even SOAP apis
POST https://example.net/InStock
Content-Type: application/soap+xml; charset=utf-8
SOAPAction: "http://www.w3.org/2003/05/soap-envelope"
GOOG
HTTP/1.1 200
Hurl can also be used to test HTTP endpoints performances:
GET http://api.example.org/v1/pets
HTTP/1.0 200
[Asserts]
duration < 1000 # Duration in ms
And responses bytes content
GET http://example.org/data.tar.gz
HTTP/1.0 200
[Asserts]
sha256 == hex,039058c6f2c0cb492c533b0a4d14ef77cc0f78abccced5287d84a1a2011cfb81;
Why Hurl?
* Text Format
For both devops and developers
* Fast CLI
A command line for local dev and continuous integration
* Single Binary
Easy to install, with no runtime required
Powered by curl
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 library. With its text file format, Hurl adds
syntactic sugar to run and tests HTTP requests, but it's still the
curl that we love.
Installation
See the the installation section.
Feedbacks
Hurl file format and runners are still in beta, any feedback,
suggestion, bugs or improvements are welcome.
POST https://hurl.dev/api/feedback
{
"name": "John Doe",
"feedback": "Hurl is awesome !"
}
HTTP/1.1 200
Resources
License
Documentation
GitHub
Build rev. bcf3c25
Hurl⇄ by CCMD Team