Skip to main content

drfjsonapi

build-status-image pypi-version

Overview

JSON API reference implementation for Django Rest Framework

This is an extremely thorough implementation of the JSON API 1.0 specification for the Django Rest Framework. It has strict error handling of non-compliant clients & follows all of the MUST’s of the spec (or will soon where missing).

Known incomplete JSON API spec features/guidelines are:

  • Error object pointers

  • “Relationship Links”

Error object pointers isn’t very great currently. It handles field-level, resource-level, & relationship “pointer” construction just fine but I don’t think it will handle any sort of complex nested field errors. The pointer may not be accurate. I’ll have to test & figure out a way to do that properly with DRF & it’s native ValidationError field names.

This matters when you look at RFC 6901. We may need something more robust here as an additional DRF plugin that drfjsonapi requires.

Relationship links are the “self” member of the links object for relationships. Currently, ember doesn’t support relationship modificiation for that endpoint so I have no incentive yet to write it. Having said that, some abstractions have already been written in this library to make the transition easy in the future.

Aside from those known limitations this library is REALLY complete. A TON of focus & attention was spent on meaningful errors & good exception handling. Much more to come on that front as I’m aware needs to be more thorough but those enhancements will come without needing to worry about the JSON API spec.

A breakdown of notable features currently implemented that you’d want in any JSON API server implementation are:

  • filter query params (spanning relationships)

  • include query params (spanning relationships)

  • page query params

  • sort query params

  • related resource links

  • ridiculously easy to follow code

  • comprehensive error handling (parsers, serializers, views, etc)

  • error coalescing

  • hooks for almost every part of the JSON API processing pipeline

  • good quality code comments

Requirements

  • Python (2.7, 3.3, 3.4)

  • Django (1.6, 1.7, 1.8)

  • Django REST Framework (2.4, 3.0, 3.1)

Installation

Install using pip…

$ pip install drfjsonapi

Example

TODO: Write example.

Testing

Install testing requirements.

$ pip install -r requirements.txt

Run with runtests.

$ ./runtests.py

You can also use the excellent tox testing tool to run the tests against all supported versions of Python and Django. Install tox globally, and then simply run:

$ tox

Documentation

To build the documentation, you’ll need to install mkdocs.

$ pip install mkdocs

To preview the documentation:

$ mkdocs serve
Running at: http://127.0.0.1:8000/

To build the documentation:

$ mkdocs build

Metadata

Release files for drfjsonapi 0.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 drfjsonapi 0.4.0
File Size Uploaded
drfjsonapi-0.4.0.tar.gz 23.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for drfjsonapi 0.4.0
File Interpreter ABI Platform
drfjsonapi-0.4.0-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 50.4 kB

Release files / drfjsonapi-0.4.0.tar.gz

Download URL drfjsonapi-0.4.0.tar.gz
Size 23.3 kB
Tags Source
SHA-256 checksum
How to use checksums
f585f4ac64fbfa15c04d455bfdc037b41a858eb8ce4423578497002e9ac66641
BLAKE2b-256 checksum
How to use checksums
afe891cf88efa0c60aad390ff0695811310068196c3adb6dcaf0e60b37300c09
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / drfjsonapi-0.4.0-py2.py3-none-any.whl

Download URL drfjsonapi-0.4.0-py2.py3-none-any.whl
Size 27.1 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
84ca8151d8d049fa637fdf3da39f957a806dfdfe870fcce5167bcbf4db079d19
BLAKE2b-256 checksum
How to use checksums
1b2983c84aed46f96a32cb674230f33d99cce6ef5920015d1c7ef773921dbd92
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

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