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

Uploaded Source

Built Distribution

flask_marshmallow-0.6.2-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.2.tar.gz.

File metadata

File hashes

Hashes for flask-marshmallow-0.6.2.tar.gz
Algorithm Hash digest
SHA256 17243508e476c79c5dd6dad3eecfc5cb5016af95ca62fd30c25a31a65b4425d0
MD5 0cbf2bc49c290c61aad2a7496e8797a3
BLAKE2b-256 cb2a443875a7aa0f408d9ed1a29a6c16b4f4988551d324e0601a2ac1425f75b5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flask_marshmallow-0.6.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 e5100a752183914aa3740d94bde1c5a236a07ca17a8412881f83f571452ed43f
MD5 ba9dd67d283615c3da04f95899a9f307
BLAKE2b-256 2bcd7972094566301ddfcc8d3c4c3657505efd812a40b4801558dede883e283d

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