RESTEasy 3.1.2

Creator: railscoder56

Last updated:

Add to Cart

Description:

RESTEasy 3.1.2

RESTEasy
REST API calls made easier





RESTEasy

Installation
Usage and examples

Import
Example 1: GitHub Jobs
Example 2: All methods: GET, POST, PUT, PATCH, DELETE
Example 3: Chuck Norris jokes
Example 4: Using custom decoder: Parsing MyAnimeList HTML content


Debugging
Exceptions



Installation
pip install resteasy

Usage and examples
Import
from resteasy import RESTEasy, json

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

# optional timeout
api.timeout = 60

Example 1: GitHub Jobs
api = RESTEasy(endpoint='https://jobs.github.com')

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

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

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

Example 2: All methods: GET, POST, PUT, PATCH, DELETE
from resteasy import RESTEasy

api = RESTEasy(endpoint='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()

Example 3: Chuck Norris jokes
from __future__ import print_function
from resteasy import RESTEasy

api = RESTEasy(endpoint='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: Using custom decoder: Parsing MyAnimeList HTML content
from resteasy import RESTEasy
from html.parser import HTMLParser

class MyHTMLParser(HTMLParser):
'''Custom HTML parser'''

def handle_starttag(self, tag, attrs):
'''Overriding abstract method'''
if tag == 'title' and not self.found:
self.found = True

def handle_data(self, data):
'''Overriding abstract method'''
if self.found and self.anime is None:
self.anime = data

def parse(self, content):
'''Parse content and return object'''
self.found = False
self.anime = None
self.feed(content)
title = self.anime.strip().replace(' - MyAnimeList.net', '') if self.found else None
return dict(title=title)

parser = MyHTMLParser()

api = RESTEasy(endpoint='https://myanimelist.net', decoder=parser.parse)

### 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(api.GET)

### Just kidding...
api.route('anime').route(1).request(api.GET).json()

# GET https://myanimelist.net/anime/1

Debugging
To enable debugging just pass or set debug=True
api.debug = True

Once debugging is set to 'True', Every HTTP call will return debug information instead of doing the actual request
>>> posts.debug = True
>>> posts.get(userId=1)
{'endpoint': 'https://jsonplaceholder.typicode.com/posts',
'params': {'userId': 1},
'method': 'GET',
'timeout': None}

Exceptions

As this package uses requests module to perform HTTP calls, so all exceptions will be raised by requests module itself.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.