flask-marshmallowFlask + marshmallow for beautiful APIs

联合创作 · 2023-09-20 23:08

Flask-Marshmallow


Latest version Build status Documentation marshmallow 3 compatible code style: black


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.

浏览 21
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报