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.
Project Links
License
MIT licensed. See the bundled LICENSE file for more details.
Release files for flask-marshmallow 1.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| flask_marshmallow-1.2.1.tar.gz | 40.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| flask_marshmallow-1.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 52.8 kB
Release files / flask_marshmallow-1.2.1.tar.gz
| Download URL | flask_marshmallow-1.2.1.tar.gz |
|---|---|
| Size | 40.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
00ee96399ed664963afff3b5d6ee518640b0f91dbc2aace2b5abcf32f40ef23a
|
|
BLAKE2b-256 checksum How to use checksums |
bf9c0c0cee00441981502358b4bc6e3d1b21247d3d80a277dde18bf3d0ad7426
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/5.0.0 CPython/3.12.2
|
Release files / flask_marshmallow-1.2.1-py3-none-any.whl
| Download URL | flask_marshmallow-1.2.1-py3-none-any.whl |
|---|---|
| Size | 12.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
10b5048ecfaa26f7c8d0aed7d81083164450e6be8e81c04b3d4a586b3f7b6678
|
|
BLAKE2b-256 checksum How to use checksums |
6858b20b1c8e3174479ea23388d61a9772132586ff492a280acbc84082a2a176
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/5.0.0 CPython/3.12.2
|