REST API calls made easier
Project description
RESTEasy
REST API calls made easier
Installation
pip install resteasy
Usage and examples
Import
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)
# optional timeout
api.timeout = 60
Example 1: GitHub Jobs
api = RESTEasy(base_url='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(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()
Example 3: Chuck Norris jokes
from __future__ import print_function
from resteasy import RESTEasy
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: 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(base_url='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('GET')
# 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',
'kwargs': {'userId': 1},
'method': 'GET',
'session': <requests.sessions.Session at 0x7f1e8c8bfeb8>,
'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
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-2.0.0.tar.gz
(5.7 kB
view details)
Built Distribution
File details
Details for the file RESTEasy-2.0.0.tar.gz
.
File metadata
- Download URL: RESTEasy-2.0.0.tar.gz
- Upload date:
- Size: 5.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9d62fab417e45c64107bcbbee19d6a297854e6a0912d0051337551e8a79cdb47 |
|
MD5 | b588c0d3f564648792dd2969ec613f17 |
|
BLAKE2b-256 | 0ea6beda88d369fd63d9436c224e693de8cbeb58b159c37f63b0fab8c3c80e60 |
File details
Details for the file RESTEasy-2.0.0-py3-none-any.whl
.
File metadata
- Download URL: RESTEasy-2.0.0-py3-none-any.whl
- Upload date:
- Size: 5.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f3618dd871c3e069b7d27c56bbd5c45fbab6bef4f7814ece90ddc2a260633fab |
|
MD5 | 998d809326fd1728e62081630c77d7ef |
|
BLAKE2b-256 | 3ba2254f44a100942004ae8f28e9a710256d9b83504914c618c49b817edf0397 |