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-hypernode.com/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***
REST API calls made easier
[![PyPI version](https://img.shields.io/pypi/v/resteasy.svg)](https://pypi-hypernode.com/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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
RESTEasy-1.0.1.tar.gz
(4.9 kB
view details)
File details
Details for the file RESTEasy-1.0.1.tar.gz
.
File metadata
- Download URL: RESTEasy-1.0.1.tar.gz
- Upload date:
- Size: 4.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d2d5cbe6f0fb5fab0233f975794a8f45307aa12ca5268a483172b680b18fb16b |
|
MD5 | fcd77ad0b232ebda94e708b9f1a5b93c |
|
BLAKE2b-256 | eb1d46f524c958f331df03eba1351eadf66000308572045a3e04e0f34778e6be |