Skip to main content

django-simpleapi: API’s for everyone

https://api.travis-ci.org/voidfiles/django-simpleapi.svg https://badge.fury.io/py/django-simpleapi.png https://pypip.in/d/django-simpleapi/badge.png

django-simpleapi is an MIT Licensed django app, written in Python, for developers.

How many times have you wanted to create a simple JSON api in Django. I mean simple. There are great tools out their like * and * but sometimes you just want to send back some JSON.

This app makes it super simple to do that.

from simpleapi import api_handler

@api_handler
def get_some_yak(request):
    return {
        'yak': 'yummm'
    }

urlpatterns = patterns(
    '',
    url(r'^get/some/yak$', get_some_yak),
)
curl http://localhost:8000/get/some/yak

{
    "data": {
        "yak": "yummm"
    },
    "meta": {
        "code": 200
    }
}

Features

  • A Simple API for Django

  • Easy execption handling, creation

  • Easy addition to meta

Installation

To install Requests, simply:

$ pip install django-simpleapi

Documentation

This easyiest way to get started is to use the api_handler decorator.

from simpleapi import api_handler

@api_handler
def get_some_yak(request):
    return {
        'yak': 'yummm'
    }

Any view function that returns a dict object will work with this interface.

Next, often in APIs you need to fail for some reason. Validation, missing params, you name it. There is an easy way to make that happen SimpleHttpException

from simpleapi import api_handler, SimpleHttpException

@api_handler
def get_some_yak(request):
    required_param = request.GET.get('required_param')

    if required_param is None:
        raise SimpleHttpException("Missing required_param", 'missing-required-param', 400)

    return {
        'yak': 'yummm'
    }

Now when you request this view and forget to pass required_param you would see something like this.

curl http://localhost:8000/get/some/yak

{
    "meta": {
        "code": 400,
        "error_message": "Missing required_param",
        "error_slug": "missing-required-param"
    }
}

Not only will the HTTP Status code be in the meta response, it will also be the HTTP Code sent back. Error slug is helpfull in resolving exceptions progrmattically. It’s mucher easier then relying on string grepping to figure out what went wrong.

Finally, you might want to add you own information to the meta part of the envelope. This would helpfull for passing information like pagination information.

from simpleapi import api_handler

@api_handler
def get_some_yak(request):
    request.META['_simple_api_meta']['yak_count'] = 1

    return {
        'yak': 'yummm'
    }

The response would now look something like this.

curl http://localhost:8000/get/some/yak

{
    "data": {
        "yak": "yummm"
    },
    "meta": {
        "code": 200,
        "yak_counter": 1
    }
}

Metadata

Release files for django-simpleapi 1.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-simpleapi 1.4.0
File Size Uploaded
django-simpleapi-1.4.0.tar.gz 4.8 kB Details

Release files / django-simpleapi-1.4.0.tar.gz

Download URL django-simpleapi-1.4.0.tar.gz
Size 4.8 kB
Tags Source
SHA-256 checksum
How to use checksums
fae2bfdaaec288c44059412a905a326850e55bd78d6771215a4f9bceafae49c1
BLAKE2b-256 checksum
How to use checksums
e3ca63afa2079e292ee832610b1203ae752ce8792b337916073886aa9a606530
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.4.0 This release

1 release file

1.3.1

1 release file

1.3.0

1 release file

1.2.1

1 release file

1.1.0

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page