Skip to content
This repository has been archived by the owner on May 29, 2020. It is now read-only.
/ resources Public archive

Resource-centered REST API clients

License

Notifications You must be signed in to change notification settings

lamenezes/resources

Repository files navigation

django-resource

PyPI latest CI Status

Resource centered REST API clients

Ideas on how to use

Not all features stated in the following examples are implemented. This section serves only as motivation for future functionalities.

import resources


class PersonResource(resources.Resource):
    class Meta:
        base_endpoint = 'http://api.com/v1/persons/'


class PageResource(resources.Resource):
    class Meta:
        endpoints = {
            'delete': 'http://api.com/v1/pages/{}/'
            'filter': 'http://api.com/v1/pages/'
            'get': 'http://api.com/v1/pages/{}/'
            'patch': 'http://api.com/v1/pages/{}/'
            'post': 'http://api.com/v1/pages/'
            'put': 'http://api.com/v1/pages/'
        }

    owner = resources.RelatedField(
        PersonResource,
        source_field='owner_url',  # default is owner_id
        auto_follow=True,  # default is False
    )

    comments = resources.MultipleRelatedField(
        CommentResource,
        source_field='comments_url',
    )


# GET / single
person = Person.objects.get(pk=1)
print(person.name)

# GET / list
person_reqset = Person.objects.filter(age=18)
for person in person_reqset:  # lazy request
    print(person.name)

# POST
person = Person.objects.create(name='John Doe', age=18)

# PATCH
person.age = 20
person.save()

# PUT
person = Person.objects.update_or_create(name='John Doe', age=30)

About

Resource-centered REST API clients

Resources

License

Stars

Watchers

Forks

Packages

No packages published