Skip to main content

JSON API 1.0 (https://jsonapi.org) formatting with marshmallow

Project description

Latest version Travis-CI

Homepage: http://marshmallow-jsonapi.readthedocs.io/

JSON API 1.0 (https://jsonapi.org) formatting with marshmallow.

marshmallow-jsonapi provides a simple way to produce JSON API-compliant data in any Python web framework.

from marshmallow_jsonapi import Schema, fields

class PostSchema(Schema):
    id = fields.Str(dump_only=True)
    title = fields.Str()

    author = fields.Relationship(
        '/authors/{author_id}',
        related_url_kwargs={'author_id': '<author.id>'},
    )

    comments = fields.Relationship(
        '/posts/{post_id}/comments',
        related_url_kwargs={'post_id': '<id>'},
        # Include resource linkage
        many=True, include_resource_linkage=True,
        type_='comments'
    )

    class Meta:
        type_ = 'posts'
        strict = True

post_schema = PostSchema()
post_schema.dump(post).data
# {
#     "data": {
#         "id": "1",
#         "type": "posts"
#         "attributes": {
#             "title": "JSON API paints my bikeshed!"
#         },
#         "relationships": {
#             "author": {
#                 "links": {
#                     "related": "/authors/9"
#                 }
#             },
#             "comments": {
#                 "links": {
#                     "related": "/posts/1/comments/"
#                 }
#                 "data": [
#                     {"id": 5, "type": "comments"},
#                     {"id": 12, "type": "comments"}
#                 ],
#             }
#         },
#     }
# }

Installation

pip install marshmallow-jsonapi

Documentation

Full documentation is available at https://marshmallow-jsonapi.readthedocs.io/.

Requirements

  • Python >= 2.7 or >= 3.3

License

MIT licensed. See the bundled LICENSE file for more details.

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

marshmallow-jsonapi-0.8.0.tar.gz (24.9 kB view details)

Uploaded Source

Built Distribution

marshmallow_jsonapi-0.8.0-py2.py3-none-any.whl (13.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file marshmallow-jsonapi-0.8.0.tar.gz.

File metadata

File hashes

Hashes for marshmallow-jsonapi-0.8.0.tar.gz
Algorithm Hash digest
SHA256 1382a33f9105b9797648dafb416b79161c671ab33479c02efbe9e200ac633bee
MD5 d7306d32d0dd6a4249a515c85c93ab6c
BLAKE2b-256 3a44fb75abff5dc72cd81e6e4e69c607f401a6fad16dab6929c4388523207984

See more details on using hashes here.

Provenance

File details

Details for the file marshmallow_jsonapi-0.8.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for marshmallow_jsonapi-0.8.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 4f59bb61c212dc67eae86d52102f6f3946951082293c5ef25d30db5e8750fe22
MD5 926c674242cc6c829c7099e2b283d9ee
BLAKE2b-256 86d4bc41d23dbda0f79630a01a6c09089fb9bccc0119b63c2b8f8652aa150e56

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page