【问题标题】:Flask-Restfull over Flask-RestlessFlask-Restful 优于 Flask-Restless
【发布时间】:2013-10-16 09:10:12
【问题描述】:

我是 Python 新手,正在探索 Flask 框架。

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

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

亲切的问候

【问题讨论】:

  • 请阅读How to Askhelp center,因为它们会讨论什么是 Stack Overflow 的好问题,什么不是好问题。这个问题没有“正确”的答案,因为它完全是主观的。像这样的问题淹没了 StackOverflow 上可以有意义地回答并对他人有用的其他问题。

标签: python json rest flask


【解决方案1】:

Restful 与 db 无关,因此您可以将它与流行的 NoSql 数据库一起使用,而 Restless 只能与 Sql 数据库一起使用(因为它依赖于 sqlalchemy)。但是,如果您最终使用 Sql 数据库并且对 sqlalchemy 没问题,那么 Restless 将为您提供更多开箱即用的功能。

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

编辑:为了展示你需要做多少事情来构建一个不安分的 api,我刚刚做了https://github.com/findjashua/flask-restless-example/blob/master/server.py

【讨论】:

    【解决方案2】:

    Flask-restless 肯定有更多开箱即用的功能,并在 Web 服务抽象级别实现 SQLAlchemy 的查询 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

    【讨论】:

      猜你喜欢
      • 2016-01-16
      • 2016-10-13
      • 2023-03-13
      • 2013-02-06
      • 1970-01-01
      • 2015-07-29
      • 2014-08-02
      • 2015-09-09
      • 2013-12-26
      相关资源
      最近更新 更多