JSON API reference implementation for Django Rest Framework
Project description
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
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
Built Distribution
File details
Details for the file drfjsonapi-0.4.0.tar.gz
.
File metadata
- Download URL: drfjsonapi-0.4.0.tar.gz
- Upload date:
- Size: 23.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f585f4ac64fbfa15c04d455bfdc037b41a858eb8ce4423578497002e9ac66641 |
|
MD5 | 7250542e2136b4f2d8c50712d44b4216 |
|
BLAKE2b-256 | afe891cf88efa0c60aad390ff0695811310068196c3adb6dcaf0e60b37300c09 |
File details
Details for the file drfjsonapi-0.4.0-py2.py3-none-any.whl
.
File metadata
- Download URL: drfjsonapi-0.4.0-py2.py3-none-any.whl
- Upload date:
- Size: 27.1 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 84ca8151d8d049fa637fdf3da39f957a806dfdfe870fcce5167bcbf4db079d19 |
|
MD5 | e4d11e07463ad1e2cd303bd59398b6c3 |
|
BLAKE2b-256 | 1b2983c84aed46f96a32cb674230f33d99cce6ef5920015d1c7ef773921dbd92 |