Flask-Restful over Flask-Restless

时间:2013-10-09 06:32:30

标签: python json rest flask

我是Python新手并探索Flask框架。

我正在使用Flask Restful来开发一个简单的基于Rest的API。现在我发现的最大挑战是将SQL Alchemy Model类用于JSON。今天我遇到了看似提供这个的Flask-Restless。那么我应该选择什么呢。我设法转换Flask Restful以通过在我的模型类中使用to_dict函数来提供JSON输出

class JSONSERIALIZER(object):
    def to_dict(self):
        return {c.name: getattr(self, c.name) for c in self.__table__.columns}

亲切的问候

2 个答案:

答案 0 :(得分:5)

Restful是db不可知的,因此你可以将它与时髦的NoSql数据库一起使用,而Restless只能用于Sql数据库(因为它依赖于sqlalchemy)。但是如果你最终使用的是Sql数据库并且可以使用sqlalchemy,那么Restless将为您提供更多开箱即用的功能。

fwiw,我个人最喜欢的是Restless + Postgres。

编辑:为了表明你需要做些什么来建立一个不安分的休息api,我刚做了https://github.com/findjashua/flask-restless-example/blob/master/server.py

答案 1 :(得分:1)

Flask-restless 绝对拥有更多开箱即用的功能,并在Web服务抽象级别实现SQLAlchemy的Query API,允许通过GET请求进行复杂查询。例如:

http://localhost:5000/api/book?q={"filters":[{"name":"is_available","op":"==","val":true},{"name":"author_id","op":"==","val":1}]}

相当于:

session.query(Book).filter(Book.author_id==1, Book.is_available == True).all()

此外, Flask-restless 有一个Beta版本,旨在遵守可能被证明非常强大的JSONAPI v1.0

我写了a quick tutorial关于如何使用SQLAlchemy和Flask-Restless来引导Flask API的问题。它也比上面的例子更深入,解释了Flask-restless如何优雅地处理相关对象。你可以在这里找到它:

http://thelaziestprogrammer.com/sharrington/web-development/sqlalchemy-defined-rest-api