Skip to main content

REST API calls made easier

Project description

RESTEasy

REST API calls made easier

PyPI version Python versions Build status Code coverage

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.

Project details


Download files

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

Source Distribution

RESTEasy-3.1.1.tar.gz (5.8 kB view details)

Uploaded Source

Built Distribution

RESTEasy-3.1.1-py3-none-any.whl (5.4 kB view details)

Uploaded Python 3

File details

Details for the file RESTEasy-3.1.1.tar.gz.

File metadata

  • Download URL: RESTEasy-3.1.1.tar.gz
  • Upload date:
  • Size: 5.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.6

File hashes

Hashes for RESTEasy-3.1.1.tar.gz
Algorithm Hash digest
SHA256 9beda0829be1a5f6e8f5f90d5306a919d9e0f2264fb94b8b6fedce0c194b1ab9
MD5 63bc7006fd053d1d82167f24d74d4d2d
BLAKE2b-256 49164f6f26cb6da59290dc59a8762918c5b83c7e2a44ef1148cf61a5c158d83c

See more details on using hashes here.

File details

Details for the file RESTEasy-3.1.1-py3-none-any.whl.

File metadata

  • Download URL: RESTEasy-3.1.1-py3-none-any.whl
  • Upload date:
  • Size: 5.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.6

File hashes

Hashes for RESTEasy-3.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 dcc7b6c049b6658dba36781ed398173632071c0b45ead01cba37007941e4ba90
MD5 bc1f1bbf181894a0cbea6f4e1482af98
BLAKE2b-256 e6b69c7eac0655db905f8f0b750c4be59a04f07f6f46014b8d39aa7eb3a96946

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page