A fast, reliable HTTP client with JSON support and intuitive syntax. Inspired by curl but with additional modern features.
- Simple and intuitive command syntax
- Support for all HTTP methods
- Custom headers and request body
- JSON formatting for requests and responses
- Response output to file
- Follow redirects with configurable limits
- Timing information
- Insecure TLS connections for testing
- Color-coded output
brew tap geekyharsh05/gurl
brew install gurlscoop bucket add geekyharsh05 https://github.com/geekyharsh05/scoop-bucket
scoop install gurlwget https://github.com/geekyharsh05/gurl/releases/download/v1.0.1/gurl_1.0.1_linux_amd64.deb
sudo apt install ./gurl_1.0.1_linux_amd64.debgo install github.com/geekyharsh05/gurl@latestgit clone https://github.com/geekyharsh05/gurl.git
cd gurl
go buildgurl request https://dummyjson.com/productsgurl request -o myfile.zip https://example.com/file.zipgurl request -X POST https://dummyjson.com/products
gurl request -X PUT https://dummyjson.com/products/1gurl request https://dummyjson.com/auth/login \
-X POST \
-H "Content-Type: application/json" \
-d '{"username":"emilys","password":"emilyspass","expiresInMins":30}'gurl request https://dummyjson.com/auth/me \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN_HERE"gurl request -L https://dummyjson.com/http/200gurl request -j https://dummyjson.com/products/1gurl request -o response.json https://dummyjson.com/usersgurl request -v https://dummyjson.com/testgurl request -k https://dummyjson.com/testgurl request --wait-time 5s https://dummyjson.com/testgurl request -v --wait-time 3s https://dummyjson.com/testThe download command offers wget-like functionality for downloading files with progress tracking, resume capability, and more:
gurl download https://example.com/file.zipgurl download -o myfile.zip https://example.com/file.zipgurl download -P ./downloads/ https://example.com/file.zipgurl download -c https://example.com/large-file.isogurl download -q https://example.com/file.zipgurl download --tries 5 --retry-delay 5s https://example.com/file.zipgurl download -t 60s https://example.com/large-file.iso-k, --insecure: Allow insecure server connections--timeout duration: Request timeout (default 30s)--max-redirects int: Maximum number of redirects to follow (default 10)--wait-time duration: Wait for the specified duration before making the request
-X, --method string: HTTP method (default "GET")-d, --data string: Request body-H, --header strings: Custom headers-v, --verbose: Show verbose output-o, --output string: Write response to file-j, --json: Format response as JSON-L, --follow: Follow redirects--json-request: Set Content-Type to application/json--form: Set Content-Type to application/x-www-form-urlencoded--no-pretty: Disable automatic JSON formatting
-o, --output string: Save file with the specified name-P, --directory string: Save files to the specified directory-c, --continue: Resume getting a partially-downloaded file-q, --quiet: Quiet mode - don't show progress bar-k, --insecure: Allow insecure server connections-t, --timeout duration: Set timeout for download (default 30s)-n, --no-redirect: Don't follow redirects--max-redirects int: Maximum number of redirects to follow (default 10)-r, --tries int: Number of retry attempts (default 3, 0 for no retries)--retry-delay duration: Delay between retries (default 2s)