Skip to main content

Flask + marshmallow for beautiful APIs

Project description

Latest version Travis-CI

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

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)
    # 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.1.tar.gz (28.6 kB view details)

Uploaded Source

Built Distribution

flask_marshmallow-0.6.1-py2.py3-none-any.whl (11.2 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

File hashes

Hashes for flask-marshmallow-0.6.1.tar.gz
Algorithm Hash digest
SHA256 430e6d84c85946bff4516e1d275acb9bc998c65414666687661877287715b343
MD5 a6c8ab6695ee54d3ef9cd72d13d5571f
BLAKE2b-256 605b0878a3e273fd1524b21133eb67fc5ec7a1a4606c0d62dd877a7fcf0ae551

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flask_marshmallow-0.6.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 d05c9665fd661c77da49a9af602b08b2d22f04d108ced25a034098db4b93f465
MD5 547dd3b1e71ad52bfa36d9662e94326d
BLAKE2b-256 fc75933c5b7527259888ac5f617c204d24748bdfe3b180ade99a8c183d2fe4d5

See more details on using hashes here.

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