Skip to main content

Flask + marshmallow for beautiful APIs

Project description

Latest version Build status Documentation marshmallow 3|4 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):
    email = ma.Email()
    date_created = ma.DateTime()

    # 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.4.0.tar.gz (41.0 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-1.4.0-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: flask_marshmallow-1.4.0.tar.gz
  • Upload date:
  • Size: 41.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for flask_marshmallow-1.4.0.tar.gz
Algorithm Hash digest
SHA256 98c90a253052c72d2ddddc925539ac33bbd780c6fba86478ffe18e3b89d8b471
MD5 27a0a6ad9bbe31b41c019bc10b77e99d
BLAKE2b-256 09436e5c19e8abc01f5daf1d3c8ad169c495335390572b8bead3f7e7302131c6

See more details on using hashes here.

Provenance

The following attestation bundles were made for flask_marshmallow-1.4.0.tar.gz:

Publisher: build-release.yml on marshmallow-code/flask-marshmallow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for flask_marshmallow-1.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b758fc2c428d0cbee6fd0ccf0d55524fe9e426a86a177dcc0fc8cd71ad4b7c59
MD5 4b2a34285f73d4fefdf69a1a64c795a4
BLAKE2b-256 709b7d0605c6f90d640547c3c9a0b95bc3bb17e252ae0f46f1dbfa90d2e06518

See more details on using hashes here.

Provenance

The following attestation bundles were made for flask_marshmallow-1.4.0-py3-none-any.whl:

Publisher: build-release.yml on marshmallow-code/flask-marshmallow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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