Skip to main content

Flask + marshmallow for beautiful APIs

Project description

Latest version https://travis-ci.org/marshmallow-code/flask-marshmallow.png?branch=pypi

Flask + marshmallow for beautiful APIs

Flask-Marshmallow is a thin integration layer for Flask (a Python web framework) and marshmallow (an object serialization/deserialization library) that adds additional features to marshmallow, including URL and Hyperlinks fields for HATEOAS-ready APIs. It also (optionally) integrates with Flask-SQLAlchemy.

Get it now

pip install flask-marshmallow

Create your app.

from flask import Flask, jsonify
from flask_marshmallow import Marshmallow

app = Flask(__name__)
ma = Marshmallow(app)

Write your models.

from your_orm import Model, Column, Integer, String, DateTime

class User(Model):
    email = Column(String)
    password = Column(String)
    date_created = Column(DateTime, auto_now_add=True)

Define your output format with marshmallow.

class UserSchema(ma.Schema):
    class Meta:
        # Fields to expose
        fields = ('email', 'date_created', '_links')
    # Smart hyperlinking
    _links = ma.Hyperlinks({
        'self': ma.URLFor('author_detail', id='<id>'),
        'collection': ma.URLFor('authors')
    })

Output the data in your views.

@app.route('/api/users/')
def users():
    all_users = User.all()
    result = users_schema.dump(all_users)
    return jsonify(result.data)
    # OR
    # return user_schema.jsonify(all_users)

@app.route('/api/users/<id>')
def user_detail(id):
    user = User.get(id)
    return user_schema.jsonify(user)
# {
#     "email": "fred@queen.com",
#     "date_created": "Fri, 25 Apr 2014 06:02:56 -0000",
#     "_links": {
#         "self": "/api/authors/42",
#         "collection": "/api/authors/"
#     }
# }

http://flask-marshmallow.readthedocs.org/

Learn More

To learn more about marshmallow, check out its docs.

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

flask-marshmallow-0.6.0.tar.gz (8.4 kB view details)

Uploaded Source

Built Distribution

flask_marshmallow-0.6.0-py2.py3-none-any.whl (11.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file flask-marshmallow-0.6.0.tar.gz.

File metadata

File hashes

Hashes for flask-marshmallow-0.6.0.tar.gz
Algorithm Hash digest
SHA256 c3690b7ed421a7b00d516322085866ff892ee62dbb9618d079569e6360ee7906
MD5 6a88d8ca644c6713a28869e20b2372fa
BLAKE2b-256 b8db54cfc1b060e0e431d0e21bb2c4961ff6e49e67dd4e3a0e2dcb25df1c6768

See more details on using hashes here.

Provenance

File details

Details for the file flask_marshmallow-0.6.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for flask_marshmallow-0.6.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 453fb977424d7d468ae197235a10603655ba89f11a132ae51a044720a2ef8192
MD5 f269fae243a413d9bb3e6f17b2bcaac2
BLAKE2b-256 f7225bb07a8c266abdeafb51f47df5fc6e890732b85b814c71ad9770ea841af8

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