Skip to main content
Help us improve PyPI by participating in user testing. All experience levels needed!

A wrapper for REST APIs

Project description

A wrapper for REST APIs

Maturity License Change Log Build Status Version

About

Syndicate is a library for using HTTP based REST APIs. This provides a means to generically handle serialization (JSON, XML) and URI mapping as seen in many of the REST APIs published these days. Currently Tastypie APIs are the primary target but the system should be compossible enough to work with other APIs if they work roughly the same way.

Requirements

  • Requests (sync mode)
  • aiohttp (async mode)

Installation

python ./setup.py build
python ./setup.py install

Compatibility

  • Python 3.4+

TODO

  • Unified authentication between HTTP adapters.
  • Documentation

Getting Started

Syndicate has two basic modes for communicating with an API, sync and async. The sync mode uses the ‘requests’ library as the HTTP adapter and the async mode uses aiohttp. An adapter can be provided by the user if they have their own backend.

In either mode, your interface is a ‘Service’ instance, which facilitates authentication, session management (via an adapter) and serialization.

Synchronous Examples

Creating a connnection

Instantiate a service class with some basic descriptions of the remote API to get a persistent connection.

import syndicate

bakery = syndicate.Service(uri='https://a.bakery.fake', urn='/api/v1/',
                           auth=('mrpresident', '1000xlight_points'))

Simple GET

Fetch all the resources at https://a.bakery.fake/api/v1/cake/

for x in bakery.get('cake'):
    print("Cake is food:", x)

Adding a new resource

new_owl = bakery.post('cake', {
    "type": "chuck_norris",
    "name": "Round House",
    "scovilles": 16000000001  # sorry resiniferatoxin
})

Non CRUD methods

If your service has non CRUD methods, you can ask a service to “do” things directly. Let’s “BAKE /api/v1/cake/100” with some instructions in the content body.

bakery.do('bake', 'cake', 100, temp=420, time=3600)

Project details


Release history Release notifications

This version
History Node

2.1.3

History Node

2.1.2

History Node

2.1.1

History Node

2.1

History Node

2

History Node

1.4.0

History Node

1.3.0

History Node

1.2.0

History Node

1.1.0

History Node

1.0.0

History Node

0.99.9

History Node

0.99.8

History Node

0.99.7

History Node

0.99.6

History Node

0.99.5

History Node

0.99.4

History Node

0.99.3

History Node

0.99.2

History Node

0.99.1

History Node

0.99.0

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
syndicate-2.1.3.tar.gz (9.3 kB) Copy SHA256 hash SHA256 Source None Apr 28, 2017

Supported by

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