Description
Unirest is a set of lightweight HTTP libraries available in multiple languages, ideal for most applications:
* Make GET, POST, PUT, PATCH, DELETE requests
* Both syncronous and asynchronous (non-blocking) requests
* It supports form parameters, file uploads and custom body entities
* Supports gzip
* Supports Basic Authentication natively
* Customizable timeout
* Customizable default headers for every request (DRY)
* Automatic JSON parsing into a native object for JSON responses
Unirest alternatives and similar gems
Based on the "HTTP" category.
Alternatively, view Unirest alternatives based on common mentions on social networks and blogs.
-
RESTClient
Simple HTTP and REST client for Ruby, inspired by microframework syntax for specifying actions. -
HTTP
HTTP (The Gem! a.k.a. http.rb) - a fast Ruby HTTP client with a chainable API, streaming support, and timeouts
Judoscale - Save 47% on cloud hosting with autoscaling that just works

* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Unirest or a related project?
Popular Comparisons
README
Unirest for Ruby

Unirest is a set of lightweight HTTP libraries available in multiple languages, built and maintained by Mashape, who also maintain the open-source API Gateway Kong.
Features
- Make
GET
,POST
,PUT
,PATCH
,DELETE
requests - Both syncronous and asynchronous (non-blocking) requests
- Supports form parameters, file uploads and custom body entities
- Supports gzip
- Supports Basic Authentication natively
- Customizable timeout
- Customizable default headers for every request (DRY)
- Automatic JSON parsing into a native object for JSON responses
Installing
Requirements: Ruby >= 2.0
To utilize unirest, install the unirest
gem:
gem install unirest
After installing the gem package you can now begin to simplifying requests by requiring unirest
:
require 'unirest'
Creating Requests
So you're probably wondering how using Unirest makes creating requests in Ruby easier, let's start with a working example:
response = Unirest.post "http://httpbin.org/post",
headers:{ "Accept" => "application/json" },
parameters:{ :age => 23, :foo => "bar" }
response.code # Status code
response.headers # Response headers
response.body # Parsed body
response.raw_body # Unparsed body
Asynchronous Requests
Unirest-Ruby also supports asynchronous requests with a callback function specified inside a block, like:
response = Unirest.post "http://httpbin.org/post",
headers:{ "Accept" => "application/json" },
parameters:{ :age => 23, :foo => "bar" } {|response|
response.code # Status code
response.headers # Response headers
response.body # Parsed body
response.raw_body # Unparsed body
}
File Uploads
response = Unirest.post "http://httpbin.org/post",
headers:{ "Accept" => "application/json" },
parameters:{ :age => 23, :file => File.new("/path/to/file", 'rb') }
Custom Entity Body
response = Unirest.post "http://httpbin.org/post",
headers:{ "Accept" => "application/json" },
parameters:{ :age => "value", :foo => "bar" }.to_json # Converting the Hash to a JSON string
Basic Authentication
Authenticating the request with basic authentication can be done by providing an auth
Hash with :user
and :password
keys like:
response = Unirest.get "http://httpbin.org/get", auth:{:user=>"username", :password=>"password"}
Request
Unirest.get(url, headers: {}, parameters: nil, auth:nil, &callback)
Unirest.post(url, headers: {}, parameters: nil, auth:nil, &callback)
Unirest.delete(url, headers: {}, parameters: nil, auth:nil, &callback)
Unirest.put(url, headers: {}, parameters: nil, auth:nil, &callback)
Unirest.patch(url, headers: {}, parameters: nil, auth:nil, &callback)
url
(String
) - Endpoint, address, or uri to be acted upon and requested information from.headers
(Object
) - Request Headers as associative array or objectparameters
(Array
|Object
|String
) - Request Body associative array or objectcallback
(Function
) - Optional; Asychronous callback method to be invoked upon result.
Response
Upon receiving a response Unirest returns the result in the form of an Object, this object should always have the same keys for each language regarding to the response details.
code
- HTTP Response Status Code (Example200
)headers
- HTTP Response Headersbody
- Parsed response body where applicable, for example JSON responses are parsed to Objects / Associative Arrays.raw_body
- Un-parsed response body
Advanced Configuration
You can set some advanced configuration to tune Unirest-Ruby:
Timeout
You can set a custom timeout value (in seconds):
Unirest.timeout(5) # 5s timeout
Default Request Headers
You can set default headers that will be sent on every request:
Unirest.default_header('Header1','Value1')
Unirest.default_header('Header2','Value2')
You can clear the default headers anytime with:
Unirest.clear_default_headers()
User-Agent
The default User-Agent string is unirest-ruby/1.1
. You can customize
it like this:
Unirest.user_agent("custom_user_agent")
Made with ♥ from the Mashape team
*Note that all licence references and agreements mentioned in the Unirest README section above
are relevant to that project's source code only.