json api规范的django rest框架api适配器。
ak-djangorestframework-jsonapi的Python项目详细描述
概述
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 } } }
要求
- Python(2.7、3.4、3.5、3.6)
- Django(1.11,2.0)
- 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
运行测试
建议创建一个用于测试的virtualenv。假设它已经 已安装并激活:
$ pip install -e . $ pip install -r requirements-development.txt $ py.test
用法
rest_framework_json_api假设您在django中使用基于类的视图 休息框架。
设置
可以添加rest_framework_json_api.parsers.JSONParser和 rest_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/