Skip to main content

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

Project description

====================================
JSON API and Django Rest Framework
====================================

.. image:: https://travis-ci.org/django-json-api/django-rest-framework-json-api.svg?branch=develop
:target: https://travis-ci.org/django-json-api/django-rest-framework-json-api

.. image:: https://readthedocs.org/projects/django-rest-framework-json-api/badge/?version=latest
:alt: Read the docs
:target: http://django-rest-framework-json-api.readthedocs.org/

.. image:: https://codeclimate.com/github/django-json-api/django-rest-framework-json-api/badges/gpa.svg
:target: https://codeclimate.com/github/django-json-api/django-rest-framework-json-api
:alt: Code Climate

.. image:: https://badges.gitter.im/Join%20Chat.svg
:alt: Join the chat at https://gitter.im/django-json-api/django-rest-framework-json-api
:target: https://gitter.im/django-json-api/django-rest-framework-json-api


--------
Overview
--------

**JSON API support for Django REST Framework**

* Documentation: http://django-rest-framework-json-api.readthedocs.org/
* Live demo (resets every hour): http://json-api.jerel.co/
* Format specification: http://jsonapi.org/format/


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.3, 3.4, 3.5, 3.6)
2. Django (1.8, 1.9, 1.10, 1.11)
3. Django REST Framework (3.1, 3.2, 3.3, 3.4, 3.5, 3.6)

------------
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.3.1.tar.gz (90.9 kB view details)

Uploaded Source

Built Distribution

djangorestframework_jsonapi-2.3.1-py2.py3-none-any.whl (98.8 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

File hashes

Hashes for djangorestframework-jsonapi-2.3.1.tar.gz
Algorithm Hash digest
SHA256 640f4000f6f262885c413cc08becefb9de021d1af0208029ef9160858b2b063b
MD5 930a0efc1b483d78d87750f177a4fe57
BLAKE2b-256 50cbb95dd45302bcd9916a3616b0b86fccae4bda49cf632dd18d9010cb45e959

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for djangorestframework_jsonapi-2.3.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 9612d58dc86d255962ef945db6132b3dcb655b61e8a912e7f825924df48d7b7e
MD5 47f297b6d97eb1157f4dbcf236c45dd1
BLAKE2b-256 485828f626c397279f02fbbc84569c804a4ab3d4bfd2bbde9378c55fdefbc236

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