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.

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')
    })

user_schema = UserSchema()
users_schema = UserSchema(many=True)

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)

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

Learn More

To learn more about marshmallow, check out its docs.

Get it now

pip install flask-marshmallow

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

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.5.1.tar.gz (7.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

flask_marshmallow-0.5.1-py2.py3-none-any.whl (9.3 kB view details)

Uploaded Python 2Python 3

File details

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

File metadata

File hashes

Hashes for flask-marshmallow-0.5.1.tar.gz
Algorithm Hash digest
SHA256 2e093e88ea0da859acfdbe1bc8cfb2c5c37ee5f685c65991d7e2e6d9f84ce29f
MD5 4c0b2b6254d91fbdb6b01a11f1b3e371
BLAKE2b-256 e1d47e11f12c8ee26f7155f521a1e49ed0c78306f73f7103a429733f39f5d3a2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flask_marshmallow-0.5.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 8ddc3c7c5e01daddfc5421837d6257cfaa074ab9c7e0425dee3184b94e03829e
MD5 f24602f9cdb302c90486964f50b700aa
BLAKE2b-256 5afde456349ee16696e8bec76918779c16d76149197179e6736d4bdfe5dbed8c

See more details on using hashes here.

Supported by

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