Python client implementation for json api. http://jsonapi.org/
Project description
jsonapi-requests
Python client implementation for json api. http://jsonapi.org/
Usage example
import jsonapi_requests api = jsonapi_requests.Api.config({ 'API_ROOT': 'https://localhost/api/2.0', 'AUTH': ('basic_auth_login', 'basic_auth_password'), 'VALIDATE_SSL': False, 'TIMEOUT': 1, }) endpoint = api.endpoint('networks/cd9c124a-acc3-4e20-8c02-3a37d460df22/available-profiles') response = endpoint.get() for profile in response.data: print(profile.attributes['name']) # Example output: "162 Sushi" endpoint = api.endpoint('cookies') endpoint.post(object=jsonapi_requests.JsonApiObject( type='cookies', attributes={ 'uuid': '09d3a4fff8d64335a1ee9f1d9d054161', 'domain': 'some.domain.pl' }, )) # Example output: <ApiResponse({'data': {'id': '81', 'attributes': {'uuid': '09d3a4fff8d64335a1ee9f1d9d054161', 'domain': 'some.domain.pl'}, 'type': 'cookies'}})>
Orm example
Lets say we have api endpoint: https://localhost/api/2.0/car/2
which returns
{ "data":{ "id": "2", "type": "car", "attributes": { "color": "red" }, "relationships": { "driver": { "data": { "id": "3", "type": "person" } } } }, "included": [ { "id": "3", "type": "person", "attributes": { "name": "Kowalski" }, "relationships": { "married-to": { "data": { "id": "4", "type": "person" } } } }, { "id": "4", "type": "person", "attributes": { "name": "Kowalska" }, "relationships": { "married-to": { "data": { "id": "3", "type": "person" } } } }, ] }
Then we can run:
import jsonapi_requests api = jsonapi_requests.orm.OrmApi.config({ 'API_ROOT': 'https://localhost/api/2.0', 'AUTH': ('basic_auth_login', 'basic_auth_password'), 'VALIDATE_SSL': False, 'TIMEOUT': 1, }) class Person(jsonapi_requests.orm.ApiModel): class Meta: type = 'person' api = api name = jsonapi_requests.orm.AttributeField('name') married_to = jsonapi_requests.orm.RelationField('married-to') class Car(jsonapi_requests.orm.ApiModel): class Meta: type = 'car' api = api color = jsonapi_requests.orm.AttributeField('color') driver = jsonapi_requests.orm.RelationField('driver') car = Car.from_id("2") car.color # request happens here # Example output: 'red' car.driver.name # Example output: 'Kowalski' car.driver.married_to.name # Example output: 'Kowalska' car.driver.married_to.married_to.name # Example output: 'Kowalski'
Authorization HTTP header forwarding in Flask application
When using jsonapi_requests with Flask, we can set jsonapi_requests.auth.FlaskForwardAuth()
as AUTH
configuration option to copy authorization header from current request context.
It can be useful when fetching resources from different microservices.
Installation with flask support:
pip install jsonapi-requests[flask]
Example usage:
import jsonapi_requests api = jsonapi_requests.Api.config({ 'API_ROOT': 'https://localhost/api/2.0', 'AUTH': jsonapi_requests.auth.FlaskForwardAuth(), })
Documentation
For more documentation check our wiki.
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.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size jsonapi_requests-0.6.2-py3-none-any.whl (12.9 kB) | File type Wheel | Python version py3 | Upload date | Hashes View |
Filename, size jsonapi-requests-0.6.2.tar.gz (12.7 kB) | File type Source | Python version None | Upload date | Hashes View |
Close
Hashes for jsonapi_requests-0.6.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e02844043b4d5a92badbd78b6f49d7d4ab8b4e84d264b07cfade3b2e964caf20 |
|
MD5 | bee7c01eedd3d0e320a0c790b4933d5d |
|
BLAKE2-256 | 01abeac6bfc5b4faa0d1d7b51a81a966d69c95704eaef4f5f593830a7254ce5f |