Resource centered REST API clients
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)