JSON API driven by aiohttp
Project description
=======================================
`JSON API`_ implementation for aiohttp_
=======================================
.. image:: https://img.shields.io/pypi/v/aiohttp_json_api.svg
:target: https://pypi.python.org/pypi/aiohttp_json_api
.. image:: https://img.shields.io/travis/vovanbo/aiohttp_json_api.svg
:target: https://travis-ci.org/vovanbo/aiohttp_json_api
.. image:: https://readthedocs.org/projects/aiohttp-json-api/badge/?version=latest
:target: https://aiohttp-json-api.readthedocs.io/en/latest/?badge=latest
:alt: Documentation Status
.. image:: https://pyup.io/repos/github/vovanbo/aiohttp_json_api/shield.svg
:target: https://pyup.io/repos/github/vovanbo/aiohttp_json_api/
:alt: Updates
Introduction
------------
This project heavily inspired by py-jsonapi_ (author is `Benedikt Schmitt`_).
Some parts of this project is improved and refactored dev-schema_ branch
of **py-jsonapi**. At beginning of aiohttp-json-api_ this branch
was a great, but not finished implementation of JSON API with
*schema controllers*. Also, py-jsonapi_ is not asynchronous and use inside
self-implemented Request/Response classes.
Some of base entities of **py-jsonapi** was replaced with **aiohttp**
server's objects, some of it was divided into new separate entities
(e.g. :class:`.context.RequestContext` or :class:`.registry.Registry`).
* Free software: MIT license
* Documentation: https://aiohttp-json-api.readthedocs.io
Requirements
------------
* **Python 3.5** or newer
* aiohttp_
* boltons_
* inflection_
* jsonpointer_
* dateutil_
* trafaret_
Todo
----
* Documentation
* Tests
* Example application
* Features description
* Customizable payload keys inflection (default is `dasherize` <-> `underscore`)
* Support for JSON API extensions (bulk creation etc.)
Credits
-------
This package was created with Cookiecutter_ and the
`cookiecutter-pypackage`_ project template.
.. _aiohttp-json-api: https://github.com/vovanbo/aiohttp_json_api
.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _cookiecutter-pypackage: https://github.com/audreyr/cookiecutter-pypackage
.. _JSON API: http://jsonapi.org
.. _aiohttp: http://aiohttp.readthedocs.io/en/stable/
.. _py-jsonapi: https://github.com/benediktschmitt/py-jsonapi
.. _dev-schema: https://github.com/benediktschmitt/py-jsonapi/tree/dev-schema
.. _`Benedikt Schmitt`: https://github.com/benediktschmitt
.. _boltons: https://boltons.readthedocs.io/en/latest/
.. _inflection: https://inflection.readthedocs.io/en/latest/
.. _jsonpointer: https://python-json-pointer.readthedocs.io/en/latest/index.html
.. _dateutil: https://dateutil.readthedocs.io/en/stable/
.. _trafaret: http://trafaret.readthedocs.io/en/latest/
=======
History
=======
0.9.1 (2017-07-06)
------------------
* Python 3.5 compatibility changes
0.9.0 (2017-07-06)
------------------
* Handle aiohttp-json-api exceptions and errors in middleware. If exceptions is not related to JSON API errors, then exception is reraised
* Huge refactoring of RequestContext
* No more use of boltons cachedproperties, instead use parsing static methods related to each request context' entity
* Update docs for RequestContext methods
* Add typings to RequestContext
0.8.2 (2017-07-05)
------------------
* Properly handle error with wrong relation name (raise HTTP 400)
0.8.1 (2017-07-05)
------------------
* Fix bdist_wheel python tag to support Python 3.5
0.8.0 (2017-07-05)
------------------
* Python 3.5 support (avoid usage of Python 3.6 format strings)
* Registry is plain object now
* Custom Registry support (`registry_class` parameter in ``aiohttp_json_api.setup_jsonapi`` method)
* Log debugging information at start about registered resources, methods and routes
* Use OrderedDict inside SchemaMeta
0.7.2 (2017-07-04)
------------------
* Fix bug with JSONPointer when part passed via __truediv__ is integer
* Validate relationship object before adding relationship in ToMany field
0.7.1 (2017-07-04)
------------------
* Fix bugs with validation of resource identifier in relationships fields
* Add typings for base fields
0.7.0 (2017-07-03)
------------------
* Setup of JSON API must be imported from package directly
* Fix bugs with decode fields and allow None values
0.6.2 (2017-06-29)
------------------
* Update HISTORY
0.6.1 (2017-06-29)
------------------
* Fix bug with Enum choices of String field
0.6.0 (2017-06-29)
------------------
* Return resource in update method of Schema class. This will be helpful in inherit classes of Schemas.
0.5.5 (2017-06-15)
------------------
* Setup auto-deploy to PyPI in Travis CI
0.5.4 (2017-06-15)
------------------
* Initial release on PyPI
0.5.3 (2017-06-14)
------------------
* Improve documentation
0.5.0 (2017-06-14)
------------------
* Don't use attrs_ package anymore
* Refactor requirements (move it into `setup.py`)
0.4.0 (2017-06-13)
------------------
* Schema imports refactoring (e.g. don't use ``aiohttp_json_api.schema.schema.Schema`` anymore)
0.3.0 (2017-06-13)
------------------
* Upgrade requirements
0.2.0 (2017-05-26)
------------------
* Fix setup.py
* Add test for Decimal trafaret field
0.1.1 (2017-05-26)
------------------
* Dirty initial version
.. _attrs: http://www.attrs.org/en/stable/
`JSON API`_ implementation for aiohttp_
=======================================
.. image:: https://img.shields.io/pypi/v/aiohttp_json_api.svg
:target: https://pypi.python.org/pypi/aiohttp_json_api
.. image:: https://img.shields.io/travis/vovanbo/aiohttp_json_api.svg
:target: https://travis-ci.org/vovanbo/aiohttp_json_api
.. image:: https://readthedocs.org/projects/aiohttp-json-api/badge/?version=latest
:target: https://aiohttp-json-api.readthedocs.io/en/latest/?badge=latest
:alt: Documentation Status
.. image:: https://pyup.io/repos/github/vovanbo/aiohttp_json_api/shield.svg
:target: https://pyup.io/repos/github/vovanbo/aiohttp_json_api/
:alt: Updates
Introduction
------------
This project heavily inspired by py-jsonapi_ (author is `Benedikt Schmitt`_).
Some parts of this project is improved and refactored dev-schema_ branch
of **py-jsonapi**. At beginning of aiohttp-json-api_ this branch
was a great, but not finished implementation of JSON API with
*schema controllers*. Also, py-jsonapi_ is not asynchronous and use inside
self-implemented Request/Response classes.
Some of base entities of **py-jsonapi** was replaced with **aiohttp**
server's objects, some of it was divided into new separate entities
(e.g. :class:`.context.RequestContext` or :class:`.registry.Registry`).
* Free software: MIT license
* Documentation: https://aiohttp-json-api.readthedocs.io
Requirements
------------
* **Python 3.5** or newer
* aiohttp_
* boltons_
* inflection_
* jsonpointer_
* dateutil_
* trafaret_
Todo
----
* Documentation
* Tests
* Example application
* Features description
* Customizable payload keys inflection (default is `dasherize` <-> `underscore`)
* Support for JSON API extensions (bulk creation etc.)
Credits
-------
This package was created with Cookiecutter_ and the
`cookiecutter-pypackage`_ project template.
.. _aiohttp-json-api: https://github.com/vovanbo/aiohttp_json_api
.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _cookiecutter-pypackage: https://github.com/audreyr/cookiecutter-pypackage
.. _JSON API: http://jsonapi.org
.. _aiohttp: http://aiohttp.readthedocs.io/en/stable/
.. _py-jsonapi: https://github.com/benediktschmitt/py-jsonapi
.. _dev-schema: https://github.com/benediktschmitt/py-jsonapi/tree/dev-schema
.. _`Benedikt Schmitt`: https://github.com/benediktschmitt
.. _boltons: https://boltons.readthedocs.io/en/latest/
.. _inflection: https://inflection.readthedocs.io/en/latest/
.. _jsonpointer: https://python-json-pointer.readthedocs.io/en/latest/index.html
.. _dateutil: https://dateutil.readthedocs.io/en/stable/
.. _trafaret: http://trafaret.readthedocs.io/en/latest/
=======
History
=======
0.9.1 (2017-07-06)
------------------
* Python 3.5 compatibility changes
0.9.0 (2017-07-06)
------------------
* Handle aiohttp-json-api exceptions and errors in middleware. If exceptions is not related to JSON API errors, then exception is reraised
* Huge refactoring of RequestContext
* No more use of boltons cachedproperties, instead use parsing static methods related to each request context' entity
* Update docs for RequestContext methods
* Add typings to RequestContext
0.8.2 (2017-07-05)
------------------
* Properly handle error with wrong relation name (raise HTTP 400)
0.8.1 (2017-07-05)
------------------
* Fix bdist_wheel python tag to support Python 3.5
0.8.0 (2017-07-05)
------------------
* Python 3.5 support (avoid usage of Python 3.6 format strings)
* Registry is plain object now
* Custom Registry support (`registry_class` parameter in ``aiohttp_json_api.setup_jsonapi`` method)
* Log debugging information at start about registered resources, methods and routes
* Use OrderedDict inside SchemaMeta
0.7.2 (2017-07-04)
------------------
* Fix bug with JSONPointer when part passed via __truediv__ is integer
* Validate relationship object before adding relationship in ToMany field
0.7.1 (2017-07-04)
------------------
* Fix bugs with validation of resource identifier in relationships fields
* Add typings for base fields
0.7.0 (2017-07-03)
------------------
* Setup of JSON API must be imported from package directly
* Fix bugs with decode fields and allow None values
0.6.2 (2017-06-29)
------------------
* Update HISTORY
0.6.1 (2017-06-29)
------------------
* Fix bug with Enum choices of String field
0.6.0 (2017-06-29)
------------------
* Return resource in update method of Schema class. This will be helpful in inherit classes of Schemas.
0.5.5 (2017-06-15)
------------------
* Setup auto-deploy to PyPI in Travis CI
0.5.4 (2017-06-15)
------------------
* Initial release on PyPI
0.5.3 (2017-06-14)
------------------
* Improve documentation
0.5.0 (2017-06-14)
------------------
* Don't use attrs_ package anymore
* Refactor requirements (move it into `setup.py`)
0.4.0 (2017-06-13)
------------------
* Schema imports refactoring (e.g. don't use ``aiohttp_json_api.schema.schema.Schema`` anymore)
0.3.0 (2017-06-13)
------------------
* Upgrade requirements
0.2.0 (2017-05-26)
------------------
* Fix setup.py
* Add test for Decimal trafaret field
0.1.1 (2017-05-26)
------------------
* Dirty initial version
.. _attrs: http://www.attrs.org/en/stable/
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
aiohttp_json_api-0.9.1.tar.gz
(45.4 kB
view details)
Built Distribution
File details
Details for the file aiohttp_json_api-0.9.1.tar.gz
.
File metadata
- Download URL: aiohttp_json_api-0.9.1.tar.gz
- Upload date:
- Size: 45.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 327f5a714bc28d40c7534737521fcb101e9944d4bb109287d3ca2badea4e7aa0 |
|
MD5 | ca084b3453dca40053a4e14de99be0de |
|
BLAKE2b-256 | 4ca03ba54246a62d1e9f81fdf40030dce485c7c2bef2464d3dcc02acb4351c8d |
File details
Details for the file aiohttp_json_api-0.9.1-py35.py36-none-any.whl
.
File metadata
- Download URL: aiohttp_json_api-0.9.1-py35.py36-none-any.whl
- Upload date:
- Size: 44.0 kB
- Tags: Python 3.5, Python 3.6
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 728b7c762f0493c5bad269d6e0e174a14ac41ff44d60f4ac42f3be3ccfd49027 |
|
MD5 | 78f0e1db258260baa5c6fb1999455d89 |
|
BLAKE2b-256 | da45f1797b8138d068f6259fedd42a3d60ff84bdba954b2898e98ab903ef2643 |