Description
XSR is an extremely simple REST client aimed to use against JSON/REST APIs.
XSR alternatives and similar gems
Based on the "HTTP" category.
Alternatively, view XSR 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
CodeRabbit: AI Code Reviews for Developers

* 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 XSR or a related project?
Popular Comparisons
README
XSR - eXtremely Simple REST client
XSR is an extremely simple REST client aimed to use against JSON/REST APIs.
Installation
Simply run
$ gem install xsr
Using Rails?
Add the following line to your Gemfile:
gem 'xsr'
Usage
Create a new instance of XSR client specifying the base_url for wich you will be requesting further paths:
require 'xsr'
client = XSR::Client.new
And then invoke a service:
resp = client.get('http://api.something.io')
resp.success?
#=> true
resp.body
#=> JSON response as a Ruby Hash Object
Supported HTTP verbs
Implemented verbs are GET, POST, PUT and DELETE. To change the verb simply invoke the corresponding method:
HTTP GET
This will make a HTTP GET request to http://api.something.io
client.get('http://api.something.io')
HTTP POST
This will make a HTTP POST request to http://api.something.io
client.post('http://api.something.io')
HTTP PUT
This will make a HTTP PUT request to http://api.something.io
client.put('http://api.something.io')
HTTP DELETE
This will make a HTTP DELETE request to http://api.something.io
client.delete('http://api.something.io')
Using query string arguments
This will make a HTTP GET request to http://api.somthing.io?arg1=a&arg2=b
client.get('http://api.something.io', args: {arg1: 'a', arg2: 'b'})
Passing JSON arguments in request body
req = { some_key: some_value, other_key: [1,2,3] }
client.post('http://api.something.io', body: req)
Using HTTP headers
This will make a HTTP GET request to http://api.somthing.io passing 'Some-Header: Some-Value' in the HTTP headers
resp = client.get('http://api.something.io', header: {some_header: 'some_value'})
Response object
HTTP response comes in the form of a XSR::Response
object:
resp = client.post('http://api.something.io')
resp.success?
#=> Response status code is 2xx
resp.bad_request?
#=> Response status code is 400
resp.unauthorized?
#=> Response status code is 401
resp.forbidden?
#=> Response status code is 403
resp.not_found?
#=> Response status code is 404
resp.server_error?
#=> Response status code is 500
resp.body
#=> JSON response as a Ruby Hash object
resp.http_response
#-> Call http_response to get full Net::HTTPResponse object
SSL considerations
By default, XSR verifies the SSL certificate for the requested server.
To use a custom CA Root certificate set ca_file
client = XSR::Client.new(ca_file: '/path/to/my_custom.pem')
client.get('https://api.something.io/get')
In case you want to skip this verfication, set skip_cert_check
:
client = XSR::Client.new(skip_cert_check: true)
client.get('https://api.something.io/get')
What's next?
I'm not planning to add more features right now, but feel free to fork this repo and add any extra functionality you consider that should be included. Please, submit a PR with proposed changes or fixes. Just keep in mind a minimalist paradigm (https://youtu.be/tXVr2E1vfmk).
License
XSR is released under the MIT License.
*Note that all licence references and agreements mentioned in the XSR README section above
are relevant to that project's source code only.