Skip to main content

Simple, readable, declarative APIs for Django

Project description

Documentation Status

Overview

django-declarative-apis is a framework built on top of Django aimed at teams implementing RESTful APis. It provides a simple interface to define endpoints declaratively. Some benefits to using django-declarative-apis:

  • Define endpoints declaratively
  • Define model-bound and unbound resource endpoints with a consistent interface
  • OAuth 1.0a authentication out of the box
  • Define resource and endpoint-bound tasks, promoting modularity
  • Define synchronous and asynchronous tasks (asynchronous tasks implemented with Celery)
  • Separation of concerns between request body processing and business logic

Quick start

This guide is intended to demonstrate the bare minimum in order to get a django-declarative-apis project up and running. The example directory contains further examples using endpoint to model relationships, authentication and response attribute filtering.

Create django app

./manage startapp myapp

Add app to INSTALLED_APPS

INSTALLED_APPS = [
   'django_declarative_apis',
   'myapp',
]

Add required config

DECLARATIVE_ENDPOINT_RESOURCE_ADAPTER = 'django_declarative_apis.adapters.EndpointResource'
DECLARATIVE_ENDPOINT_AUTHENTICATION_HANDLERS = 'django_declarative_apis.authentication.oauthlib.oauth1.TwoLeggedOauth1'

myapp/urls.py

from django_declarative_apis import adapters
import myapp.resources

class NoAuth:
   @staticmethod
   def is_authenticated(request):
      return True


urlpatterns = [
    url(
        r'^ping$',
        adapters.resource_adapter(
            get=myapp.resources.PingDefinition,
            authentication=NoAuth
        )
    ),
]

myproject/myproject/urls.py

from django.conf.urls import url, include
import myapp.urls

urlpatterns = [
   url(r'^', include(myapp.urls)),
]

myapp/resources.py

from django_declarative_apis import machinery


class PingDefinition(machinery.BaseEndpointDefinition):
    def is_authorized(self):
        return True

    @property
    def resource(self):
        return {'ping': 'pong'}

Optional: Implement Custom Event Hooks for Event Emission

# settings.py 
DDA_EVENT_HOOK = "my_app.hooks.custom_event_handler"

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_declarative_apis-0.34.2.tar.gz (54.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_declarative_apis-0.34.2-py3-none-any.whl (58.7 kB view details)

Uploaded Python 3

File details

Details for the file django_declarative_apis-0.34.2.tar.gz.

File metadata

  • Download URL: django_declarative_apis-0.34.2.tar.gz
  • Upload date:
  • Size: 54.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for django_declarative_apis-0.34.2.tar.gz
Algorithm Hash digest
SHA256 a74ca905feab8fd234e9cdccf864b0a0df55731a447135bdc30ff13f29572999
MD5 fbc32f5ae3cd1c3a1505ea0d27be992b
BLAKE2b-256 af00eff95280e1acada62def8434f4d29c78125e2ccaa465579f1d27c39821f8

See more details on using hashes here.

File details

Details for the file django_declarative_apis-0.34.2-py3-none-any.whl.

File metadata

File hashes

Hashes for django_declarative_apis-0.34.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0f7ccba8fffa4fcec50e0e8c5ed2a74492d84fd035650ad11dde57aabcb6a84e
MD5 1d25a9d5d9805660843c6992997c882c
BLAKE2b-256 24aa8007bda2fdfb5784c454d25a703f22328f2c51a247c988e7ddebd5ce2c46

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page