Skip to main content

REST API calls made easier

Project description

# RESTEasy

REST API calls made easier

[![PyPI version](https://img.shields.io/pypi/v/resteasy.svg)](https://pypi.python.org/pypi/resteasy)
[![Build Status](https://travis-ci.org/rapidstack/RESTEasy.svg?branch=master)](https://travis-ci.org/rapidstack/RESTEasy)
[![Join the chat at https://gitter.im/rapidstack/RESTEasy](https://badges.gitter.im/rapidstack/RESTEasy.svg)](https://gitter.im/rapidstack/RESTEasy?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)




## Installation

```bash
pip install resteasy
```

## Usage and examples

### Import

```python
from resteasy import RESTEasy, json

api = RESTEasy(base_url='https://api.example.com',
auth=('user', '****'),
verify=False, cert=None, timeout=None,
encoder=json.dumps, decoder=json.loads, debug=False)
```

### Example 1: GitHub Jobs

```python
api = RESTEasy(base_url='https://jobs.github.com')

positions = api.route('positions.json')

positions.get(description='python', full_time=True)
# or
positions.do('GET', {'description': 'python', 'full_time': True})

# GET https://jobs.github.com/positions.json?description=python&full_time=1
```

### Example 2: Jikan animes

```python
api = RESTEasy(base_url='https://api.jikan.me')

### One way
api.route('anime/1').get()

### Another way
api.route('anime', 1).get()

### Yet another way
api.route('anime').route(1).get()

### This is the last way I swear
api.route('anime').route(1).do('GET')

# GET https://api.jikan.me/anime/1
```

### Example 3: Chuck Norris jokes

```python
from __future__ import print_function

api = RESTEasy(base_url='https://api.chucknorris.io')


### Print a random joke
jokes = api.route('jokes')
random = jokes.route('random')
print(random.get())

# GET https://api.chucknorris.io/jokes/random


### Get all categories
categories = jokes.route('categories').get()
print(categories)

# GET https://api.chucknorris.io/jokes/categories


### Print a random joke from each category
for category in categories:
random_joke = random.get(category=category)
print(category, ':', random_joke['value'])

# GET https://api.chucknorris.io/jokes/random?category=<category>
```

### Example 4: All methods: GET, POST, PUT, PATCH, DELETE

```python
api = RESTEasy(base_url='https://jsonplaceholder.typicode.com')

posts = api.route('posts')

### GET (fetch resources)
posts.get()
posts.get(userId=1)
posts.route(1).get()

### POST (create a resource)
posts.post(title='foo', body='bar', userId=1)

### PUT & PATCH (update a resource)
posts.route(1).put(id=1, title='foo', body='bar', userId=1)
posts.route(1).patch(title='foo')

### DELETE (delete a resource)
posts.route(1).delete()
```

## Debugging

To enable debugging just pass or set ***debug=True***

```python
api.debug = True
```

Once debugging is set to 'True', Every HTTP call will return debug information instead of doing the actual request

```python
>>> posts.debug = True
>>> posts.get(userId=1)
{'endpoint': 'https://jsonplaceholder.typicode.com/posts',
'kwargs': {'userId': 1},
'method': 'GET',
'session': <requests.sessions.Session at 0x7f1e8c8bfeb8>}
```

## Exceptions

* As is uses requests module to perform HTTP calls, most exceptions will be raised by requests module itself.

* In case API server returns HTTP status code outside the range of 200-299, It will raise ***resteasy.HTTPError***

* In case the returned content by API server is not parsable, It will raise ***resteasy.InvalidResponseError***

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
RESTEasy-1.0.1.tar.gz (4.9 kB) Copy SHA256 hash SHA256 Source None Mar 10, 2018

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page