Skip to main content

A Django REST framework API adapter for the JSON API spec.

Project description

https://travis-ci.org/django-json-api/django-rest-framework-json-api.svg?branch=develop Read the docs Join the chat at https://gitter.im/django-json-api/django-rest-framework-json-api

Overview

JSON API support for Django REST Framework

By default, Django REST Framework will produce a response like:

{
    "count": 20,
    "next": "http://example.com/api/1.0/identities/?page=3",
    "previous": "http://example.com/api/1.0/identities/?page=1",
    "results": [{
        "id": 3,
        "username": "john",
        "full_name": "John Coltrane"
    }]
}

However, for an identity model in JSON API format the response should look like the following:

{
    "links": {
        "prev": "http://example.com/api/1.0/identities",
        "self": "http://example.com/api/1.0/identities?page=2",
        "next": "http://example.com/api/1.0/identities?page=3",
    },
    "data": [{
        "type": "identities",
        "id": 3,
        "attributes": {
            "username": "john",
            "full-name": "John Coltrane"
        }
    }],
    "meta": {
        "pagination": {
          "count": 20
        }
    }
}

Requirements

  1. Python (2.7, 3.4, 3.5, 3.6)

  2. Django (1.11, 2.0)

  3. Django REST Framework (3.6, 3.7, 3.8)

Installation

From PyPI

$ pip install djangorestframework-jsonapi

From Source

$ git clone https://github.com/django-json-api/django-rest-framework-json-api.git
$ cd django-rest-framework-json-api
$ pip install -e .

Running the example app

$ git clone https://github.com/django-json-api/django-rest-framework-json-api.git
$ cd django-rest-framework-json-api
$ pip install -e .
$ django-admin.py runserver --settings=example.settings

Browse to http://localhost:8000

Running Tests

It is recommended to create a virtualenv for testing. Assuming it is already installed and activated:

$ pip install -e .
$ pip install -r requirements-development.txt
$ py.test

Usage

rest_framework_json_api assumes you are using class-based views in Django Rest Framework.

Settings

One can either add rest_framework_json_api.parsers.JSONParser and rest_framework_json_api.renderers.JSONRenderer to each ViewSet class, or override settings.REST_FRAMEWORK

REST_FRAMEWORK = {
    'PAGE_SIZE': 10,
    'EXCEPTION_HANDLER': 'rest_framework_json_api.exceptions.exception_handler',
    'DEFAULT_PAGINATION_CLASS':
        'rest_framework_json_api.pagination.PageNumberPagination',
    'DEFAULT_PARSER_CLASSES': (
        'rest_framework_json_api.parsers.JSONParser',
        'rest_framework.parsers.FormParser',
        'rest_framework.parsers.MultiPartParser'
    ),
    'DEFAULT_RENDERER_CLASSES': (
        'rest_framework_json_api.renderers.JSONRenderer',
        'rest_framework.renderers.BrowsableAPIRenderer',
    ),
    'DEFAULT_METADATA_CLASS': 'rest_framework_json_api.metadata.JSONAPIMetadata',
}

If PAGINATE_BY is set the renderer will return a meta object with record count and a links object with the next and previous links. Pages can be specified with the page GET parameter.

This package provides much more including automatic inflection of JSON keys, extra top level data (using nested serializers), relationships, links, and handy shortcuts like MultipleIDMixin. Read more at http://django-rest-framework-json-api.readthedocs.org/

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

djangorestframework-jsonapi-2.5.0.tar.gz (52.3 kB view details)

Uploaded Source

Built Distribution

djangorestframework_jsonapi-2.5.0-py2.py3-none-any.whl (140.3 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file djangorestframework-jsonapi-2.5.0.tar.gz.

File metadata

File hashes

Hashes for djangorestframework-jsonapi-2.5.0.tar.gz
Algorithm Hash digest
SHA256 94cec93546ed48c92ace053562bdd94504d2f396c68d551c6f99277923cebaf4
MD5 fb2ed00c186c68c0763ab4f68f7a869a
BLAKE2b-256 5e810736229686314c76b5b06bc5ddae35031462f7a89e211be6e91287f54d80

See more details on using hashes here.

File details

Details for the file djangorestframework_jsonapi-2.5.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for djangorestframework_jsonapi-2.5.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 61c3b5ce8b88243b5608254df7f2861cec9cbd933b06b798716c4ad7549710d7
MD5 749402f4fc776bcdcdbc680ebca8ef1c
BLAKE2b-256 6bbe53fa8a2c92d0a6d7a7edd353da1afe4bd03d3376dcbf6b11340aa2f9ba8a

See more details on using hashes here.

Supported by

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