Skip to main content

Flask + marshmallow for beautiful APIs

Project description

Latest version Build status Documentation marshmallow 3 compatible

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
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("user_detail", values=dict(id="<id>")),
            "collection": ma.URLFor("users"),
        }
    )


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

Output the data in your views.

@app.route("/api/users/")
def users():
    all_users = User.all()
    return users_schema.dump(all_users)


@app.route("/api/users/<id>")
def user_detail(id):
    user = User.get(id)
    return user_schema.dump(user)


# {
#     "email": "fred@queen.com",
#     "date_created": "Fri, 25 Apr 2014 06:02:56 -0000",
#     "_links": {
#         "self": "/api/users/42",
#         "collection": "/api/users/"
#     }
# }

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

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

Uploaded Source

Built Distribution

flask_marshmallow-1.0.0-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

File details

Details for the file flask_marshmallow-1.0.0.tar.gz.

File metadata

  • Download URL: flask_marshmallow-1.0.0.tar.gz
  • Upload date:
  • Size: 40.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for flask_marshmallow-1.0.0.tar.gz
Algorithm Hash digest
SHA256 1f50780d9f82ae2df4137d75fe177958c90c3b901055511323fc292c44a9d09f
MD5 37be9fd5032e947afb764ce1022fe001
BLAKE2b-256 84d099a3aa255770ba1f9e4aaa70776ca6de8617947cee605645b2ec9cd3eea5

See more details on using hashes here.

File details

Details for the file flask_marshmallow-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for flask_marshmallow-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 88af03bc5cc9d72c8b295d3854119f6d9882881a8a604ccd6d64de62b7a293f0
MD5 eb445e80355e3b7da0ddd6e33eafad02
BLAKE2b-256 6c7c9776909839f575b545f98a307c4d5759eb19f61e9e5b2f9e8d9ae5165441

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