All Projects → django-json-api → Django Rest Framework Json Api

django-json-api / Django Rest Framework Json Api

Licence: bsd-2-clause
JSON API support for Django REST Framework

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Django Rest Framework Json Api

Dataengineeringproject
Example end to end data engineering project.
Stars: ✭ 82 (-90.87%)
Mutual labels:  hacktoberfest, django-rest-framework
Json Api Dart
JSON:API client for Dart/Flutter
Stars: ✭ 53 (-94.1%)
Mutual labels:  json-api, hacktoberfest
Tutorialdb
A search 🔎 engine for programming/dev tutorials, See it in action 👉
Stars: ✭ 93 (-89.64%)
Mutual labels:  hacktoberfest, django-rest-framework
Drf Nested Routers
Nested Routers for Django Rest Framework
Stars: ✭ 1,098 (+22.27%)
Mutual labels:  hacktoberfest, django-rest-framework
dr scaffold
scaffold django rest apis like a champion 🚀
Stars: ✭ 116 (-87.08%)
Mutual labels:  json-api, django-rest-framework
Maria Quiteria
Backend para coleta e disponibilização dos dados 📜
Stars: ✭ 115 (-87.19%)
Mutual labels:  hacktoberfest, django-rest-framework
Django Rest Passwordreset
An extension of django rest framework, providing a configurable password reset strategy
Stars: ✭ 238 (-73.5%)
Mutual labels:  hacktoberfest, django-rest-framework
Dictfier
Python library to convert/serialize class instances(Objects) both flat and nested into a dictionary data structure. It's very useful in converting Python Objects into JSON format
Stars: ✭ 67 (-92.54%)
Mutual labels:  json-api, django-rest-framework
Json Api
Implementation of JSON API in PHP 7
Stars: ✭ 171 (-80.96%)
Mutual labels:  json-api, hacktoberfest
Laravel Api Boilerplate
A Boilerplate Project For Laravel API's (NOT MAINTAINED)
Stars: ✭ 113 (-87.42%)
Mutual labels:  json-api, hacktoberfest
Elide
Elide is a Java library that lets you stand up a GraphQL/JSON-API web service with minimal effort.
Stars: ✭ 766 (-14.7%)
Mutual labels:  json-api, hacktoberfest
Redux Json Api
Redux actions, action creators and reducers to make life with JSON APIs a breeze.
Stars: ✭ 374 (-58.35%)
Mutual labels:  json-api, hacktoberfest
Django Rest Framework Gis
Geographic add-ons for Django REST Framework. Maintained by the OpenWISP Project.
Stars: ✭ 830 (-7.57%)
Mutual labels:  hacktoberfest, django-rest-framework
Django Rest Formly
Generate angular-formly form configuration object for Django REST endpoints.
Stars: ✭ 7 (-99.22%)
Mutual labels:  django-rest-framework
Cli Prompts Test
Write e2e tests for CLI apps with ease
Stars: ✭ 17 (-98.11%)
Mutual labels:  hacktoberfest
Abapgit
Git client for ABAP
Stars: ✭ 835 (-7.02%)
Mutual labels:  hacktoberfest
Liquidctl
Cross-platform CLI and Python drivers for AIO liquid coolers and other devices
Stars: ✭ 830 (-7.57%)
Mutual labels:  hacktoberfest
Django rest example
Django/DRF rest application example.
Stars: ✭ 17 (-98.11%)
Mutual labels:  django-rest-framework
Dotfiles Manager
A powerful POSIX shell dotfiles manager program
Stars: ✭ 17 (-98.11%)
Mutual labels:  hacktoberfest
Forbes400
JSON Api Of The Forbes 400 Richest People List
Stars: ✭ 7 (-99.22%)
Mutual labels:  json-api

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

.. image:: https://github.com/django-json-api/django-rest-framework-json-api/workflows/Tests/badge.svg :alt: Tests :target: https://github.com/django-json-api/django-rest-framework-json-api/actions

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

.. image:: https://img.shields.io/pypi/v/djangorestframework-jsonapi.svg :alt: PyPi Version :target: https://pypi.org/project/djangorestframework-jsonapi/


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
        }
    }
}

Goals

As a Django REST Framework JSON API (short DJA) we are trying to address following goals:

  1. Support the JSON API_ spec to compliance

  2. Be as compatible with Django REST Framework_ as possible

    e.g. issues in Django REST Framework should be fixed upstream and not worked around in DJA

  3. Have sane defaults to be as easy to pick up as possible

  4. Be solid and tested with good coverage

  5. Be performant

.. _JSON API: http://jsonapi.org .. _Django REST Framework: https://www.django-rest-framework.org/


Requirements

  1. Python (3.6, 3.7, 3.8, 3.9)
  2. Django (2.2, 3.0, 3.1)
  3. Django REST Framework (3.12)

We highly recommend and only officially support the latest patch release of each Python, Django and REST Framework series.

Generally Python and Django series are supported till the official end of life. For Django REST Framework the last two series are supported.


Installation

From PyPI ^^^^^^^^^

::

$ pip install djangorestframework-jsonapi
$ # for optional package integrations
$ pip install djangorestframework-jsonapi['django-filter']
$ pip install djangorestframework-jsonapi['django-polymorphic']
$ pip install djangorestframework-jsonapi['openapi']

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 ^^^^^^^^^^^^^^^^^^^^^^^

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

::

$ git clone https://github.com/django-json-api/django-rest-framework-json-api.git
$ cd django-rest-framework-json-api
$ pip install -Ur requirements.txt
$ django-admin migrate --settings=example.settings
$ django-admin loaddata drf_example --settings=example.settings
$ django-admin runserver --settings=example.settings

Browse to


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.JsonApiPageNumberPagination',
    '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_json_api.renderers.BrowsableAPIRenderer',
    ),
    'DEFAULT_METADATA_CLASS': 'rest_framework_json_api.metadata.JSONAPIMetadata',
    'DEFAULT_FILTER_BACKENDS': (
        'rest_framework_json_api.filters.QueryParameterValidationFilter',
        'rest_framework_json_api.filters.OrderingFilter',
        'rest_framework_json_api.django_filters.DjangoFilterBackend',
        'rest_framework.filters.SearchFilter',
    ),
    'SEARCH_PARAM': 'filter[search]',
    'TEST_REQUEST_RENDERER_CLASSES': (
        'rest_framework_json_api.renderers.JSONRenderer',
    ),
    'TEST_REQUEST_DEFAULT_FORMAT': 'vnd.api+json'
}

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].