json api规范的django rest框架api适配器。

ak-djangorestframework-jsonapi的Python项目详细描述


https://travis-ci.org/django-json-api/django-rest-framework-json-api.svg?branch=developRead the docsJoin the chat at https://gitter.im/django-json-api/django-rest-framework-json-api

概述

json api支持django rest框架

默认情况下,django rest framework将生成如下响应:

{
    "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"
    }]
}

但是,对于json api格式的identity模型,响应应该是 如下所示:

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

要求

  1. Python(2.7、3.4、3.5、3.6)
  2. Django(1.11,2.0)
  3. django rest框架(3.6、3.7)

安装

来自Pypi

$ pip install djangorestframework-jsonapi

来源

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

运行示例应用程序

$ 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

浏览到http://localhost:8000

运行测试

建议创建一个用于测试的virtualenv。假设它已经 已安装并激活:

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

用法

rest_framework_json_api假设您在django中使用基于类的视图 休息框架。

设置

可以添加rest_framework_json_api.parsers.JSONParserrest_framework_json_api.renderers.JSONRenderer到每个ViewSet类,或 覆盖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',
}

如果设置了PAGINATE_BY,则呈现程序将返回一个meta对象 记录计数和带有下一个和上一个链接的links对象。页 可以用pageget参数指定。

这个包提供了更多的信息,包括JSON键的自动拐点、额外的顶层数据(使用嵌套的序列化器)、关系、链接以及像MuleIDIDMIXIN这样的便捷快捷方式。阅读http://django-rest-framework-json-api.readthedocs.org/

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java OnResizeListener或OnDrawListener或类似的东西   java Orika映射嵌套子列表   保存时java Heroku请求超时代码H12   数据库在Java中出现socket读取超时异常的原因是什么?   java如何更改来自Sqlite数据库的特定数据在Listview中的行颜色   java JAXB解组器无法正确处理XML中的列表   java Android日期时区让我抓狂   java不透明属性在Swing中如何工作?   eclipse从JavaEE代码生成流程图   java如何在Hibernate中从相关表中获取计数   java Glassfish部署了项目的依赖项库   java使内容适合JavaFx中的WebView   java不满意的链接错误libcrypto。所以1.0.0   循环中java数组的使用   java找出哪个包调用服务