Accessing APIs open-endily is an easy affair. pip install requests, pass in your data get data back. But the slight differences and demands of different API creating code that’s structured, re-usable and simple proves difficult.
nap hopes to help.
# note/client.py
from nap.resources import ResourceModel, Field
class Note(ResourceModel):
pk = Field(api_name='id', resource_id=True)
title = Field()
content = Field()
class Meta:
root_url = 'http://127.0.0.1:8000/api/'
resource_name = 'note'
n = Note(title='Some Title', content="some content")
# POST http://127.0.0.1:8000/api/note/
n.save()
n = Note.get('note/1/')
# Some Title
n.title
# GET http://127.0.0.1:8000/api/note/1/
n = Note.objects.lookup(pk=1)
n.title = "New Title"
n.content = "I sure do love naps!"
# PUT http://127.0.0.1:8000/api/note/1/
n.save()
n = Note.objects.get('note/1/')
# "New Title"
n.title
nap aims to:
- Support Read (GET) and Write (POST/PUT/PATCH)
- Required little to no configuration needed for to-spec REST APIs
- Be easily configurable to fit any REST-like API
- Be customizable to fit even edgier use cases
% pip install git+https://github.com/jacobb/nap/