.. _ref-tutorial: ============================ Getting Started with Slumber ============================ Installation ============ Slumber is available on PyPi and the preferred method of install is using Pip. 1. Install Slumber:: $ pip install slumber 2. Install Optional Dependencies **[OPTIONAL]** PyYaml *(Required for the yaml serializer)*:: $ pip install pyyaml **[OPTIONAL]** SimpleJson *(Required for the json serializer on Python2.5, or for speedups)*:: $ pip install simplejson Using ===== Using Slumber is easy. Using an example ReST API made with `django-tastypie`_ which you can see at http://slumber.in/api/v1/. .. _django-tastypie: http://github.com/toastdriven/django-tastypie/ .. code-block:: pycon >>> import slumber >>> ## Connect to http://slumber.in/api/v1/ with the Basic Auth user/password of demo/demo >>> api = slumber.API("http://slumber.in/api/v1/", auth=("demo", "demo")) >>> ## GET http://slumber.in/api/v1/note/ >>> ## Note: Any kwargs passed to get(), post(), put(), delete() will be used as url parameters >>> api.note.get() >>> ## POST http://slumber.in/api/v1/note/ >>> new = api.note.post({"title": "My Test Note", "content": "This is the content of my Test Note!"}) >>> ## PUT http://slumber.in/api/v1/note/{id}/ >>> api.note(new["id"]).put({"content": "I just changed the content of my Test Note!"}) >>> ## PATCH http://slumber.in/api/v1/note/{id}/ >>> api.note(new["id"]).patch({"content": "Wat!"}) >>> ## GET http://slumber.in/api/v1/note/{id}/ >>> api.note(new["id"]).get() >>> ## DELETE http://slumber.in/api/v1/note/{id}/ >>> api.note(new["id"]).delete() Url Parameters ============== Passing an url parameter to Slumber is easy. If you wanted to say, use Tastypie's ApiKey authentication, you could do so like:: >>> api.resource.get(username="example", api_key="1639eb74e86717f410c640d2712557aac0e989c8") If you wanted to filter the Slumber demo api for notes that start with Bacon, you could do:: >>> import slumber >>> api = slumber.API("http://slumber.in/api/v1/", auth=("demo", "demo")) >>> ## GET http://slumber.in/api/v1/note/?title__startswith=Bacon >>> api.note.get(title__startswith="Bacon") Nested Resources ================ Nested resources are also easy and works just how a single level resource works:: >>> ## GET /resource1/resource2/ >>> api.resource1.resource2.get() >>> ## GET /resource1/1/resource2/ >>> api.resource1(1).resource2.get()