Skip to main content

REST client

Project description

A REST client - inspired by restmod for javascript.

Quick start for contributing

virtualenv -p `which python3` virtualenv
source virtualenv/bin/activate
pip install -r requirements.txt
pip install -r dev_requirements.txt
nosetests

Usage

from peace import PeaceMaker

def set_authorization_header(request):
    request.headers['Authorization'] = authorization_value
    return request

maker = PeaceMaker('http://api.example.com')
Employee = maker.make(
    'Employee',
    '/employees'
    has: {
        'user': maker.make('Company'),
    },
    intercept: set_authorization_header,
)

employees = Employee.search(last_name='Smith')
bob = Employee.get('100')
bob.last_name = 'Smith-Jones'
bob.save()
bob.refresh()
company = bob.company
print(company.name) # prints name

Peace requires the REST API to conform to a particular structure. A JSON response should look something like this:

{
  "data": {
    "id": 100,
    "first_name": "Bob",
    "last_name": "Smith",
  },
  "links": {
    "self": {"href": "/employees/100"},
    "company": {
      "href": "/companies/5",
      "data": {
        "name": "Big Corp",
      },
    },
  },
}

Links can be followed (e.g. bob.company). Initially, the data returned in the original request will be immediately available, but if you try to access other fields that a direct load is required to make available, (i.e. were not in the original response), then a load of the linked object will be done first (e.g. GET /companies/5).

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

peace-0.0.5.tar.gz (5.6 kB view details)

Uploaded Source

File details

Details for the file peace-0.0.5.tar.gz.

File metadata

  • Download URL: peace-0.0.5.tar.gz
  • Upload date:
  • Size: 5.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for peace-0.0.5.tar.gz
Algorithm Hash digest
SHA256 6c8c2d3d9f32b6cf8b3892e549445098676136ce8675cf0a9c3750d924914b48
MD5 aca15871c7112c7b5ed377a8fea9bd9a
BLAKE2b-256 851d76b299c0139c1a7e1790e9d709e9bc706be95924dfd7cfc0477ba143080e

See more details on using hashes here.

Supported by

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