Skip to main content

Generic Connector so you can easily create simple and readable classes for accessing APIs.

Project description

Base API Connector

Helps create a simple API Connector where all you have to do is define the resources and possible commands.

Instructions

Using the Module

First import the GenericAPIConnector class:

from base_api_connector import GenericAPIConnector

Then, define a base_api_url and resource fields like this:

class ImplementedAPIConnector(GenericAPIConnector):
    base_api_url = 'http://127.0.0.1:8000/notes-backend/'
    reports = APIResource(('create', 'retrieve', 'update'))
    users = APIResource('all')

That will generate the following attributes when you use the class:

conn = ImplementedAPIConnector()

conn.reports.create(data)
conn.reports.retrieve(pk)
conn.reports update(pk, data)

conn.users.list()
conn.users.create(data)
conn.users.retrieve(pk)
conn.users.update(pk, data)
conn.users.delete(pk)

Asyncio

You can tell tell your resource fields that they should be accessed with asyncio per default:

class ImplementedAPIConnector(GenericAPIConnector):
    # ...
    users = APIResource('all', is_async=True)

and then use it in an async metho as follows:

async def create_user(user):
    r = await conn.user.create(user)
    data = await r.json()
    # ...

Alternatively, you can change switch to async in-line as well:

    # ...
    r = await conn.reports(is_async=True).list()
    # ...

or the other way around:

r = conn.user(is_async=False).list()

Using The Returned Object

The methods of GenericAPIConnector return a regular Response object from the requests module. See requests Documentation for Response for more details.

Using AsDictObject (WIP)

If you want to define how a resource looks only once, import AsDictObject:

import datetime
from base_api_connecotr import AsDictObject

class CreateUsersResourceObject(AsDictObject):
    name = None  # None will not pass the field in the request
    created = datetime.datetime.now  # use methods to set defaults like this
    created_for_app = 'readme_example'

And then use it like this:

user = CreateUsersResourceObject():
user.name = 'readme user'
conn.users.create(user)

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

base_api_connector-0.3.1.1-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

Details for the file base_api_connector-0.3.1.1-py3-none-any.whl.

File metadata

  • Download URL: base_api_connector-0.3.1.1-py3-none-any.whl
  • Upload date:
  • Size: 10.8 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/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.0

File hashes

Hashes for base_api_connector-0.3.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 693eeee452d9383b651f9ddfc79f44dd0ac40da5877b29a0783cb11260b849a3
MD5 407fa98b15b419c7dd4c1b6951a1f014
BLAKE2b-256 bc3a9caaa4cde4df756585c74f2e914a40703ceb482494b7a16ae1ad7c3637bf

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