Django-API-Playground
Python JavaScript Elixir
Latest commit 9dbc152 Apr 11, 2013 @fatiherikli fatiherikli Merge pull request #16 from tfcoding/django_15
Template Django 1.5 Compatible
Permalink
Failed to load latest commit information.
apiplayground Template Django 1.5 Compatible Apr 10, 2013
conf Merge branch 'add_endpoint_full_description' of git://github.com/pjam… Mar 19, 2013
docs/images
example Adds default value support for parameters. Nov 7, 2012
.gitignore added untracked files Sep 25, 2012
LICENSE added setup.py Sep 25, 2012
MANIFEST.in updated setup script Oct 5, 2012
README.rst
setup.py

README.rst

Django API Playground

A django app that creates api explorer for RESTful APIs.

Works with any RESTful API. For example, you can create api explorer for your tastypie based API with this app.

Demo: http://api-playground-demo.hipo.biz

https://github.com/hipo/Django-API-Playground/raw/master/docs/images/api-playground-2.png

Instructions

To get this application up and running, please follow the steps below:

Install from pip:

pip install django-api-playground

Or from source:

pip install git+git://github.com/Hipo/Django-API-Playground.git

Add to installed apps:

INSTALLED_APPS =(
    # ...

    'apiplayground',
)

Create database tables:

./manage.py syncdb

Installation is completed. You can define the API schema now.

First step, Create an url:

# urls.py

from api.playgrounds import ExampleAPIPlayground

urlpatterns = patterns('',
    (r'api-explorer/', include(ExampleAPIPlayground().urls)),
)

Second step, Define a subclass for your API:

# api/playgrounds.py

from apiplayground import APIPlayground

class ExampleAPIPlayground(APIPlayground):

    schema = {
        "title": "API Playground",
        "base_url": "http://localhost/api/",
        "resources": [
            {
                "name": "/feedbacks",
                "description": "This resource allows you to manage feedbacks.",
                "endpoints": [
                    {
                        "method": "GET",
                        "url": "/api/feedbacks/{feedback-id}",
                        "description": "Returns a specific feedback item",
                        "parameters": [{
                            "name": "order_by",
                            "type": "select",
                            "choices": [["", "None"], ["id", "id"], ["-id", "-id"]],
                            "default": "id"
                        }]
                    },
                    {
                        "method": "POST",
                        "url": "/api/feedbacks/",
                        "description": "Creates new feedback item",
                        "parameters": [{
                            "name": "title",
                            "type": "string"
                        },
                        {
                            "name": "resource",
                            "type": "string"
                        },
                        {
                           "name": "description",
                           "type": "string"
                        }]
                    }
                ]
            },
        ]
    }

That's all. More detailed documentation will be coming soon.

Special Thanks

  • Berker Peksag (for such a beautiful project name suggestion)