使用flask-restless创建API响应

时间:2015-01-13 21:07:07

标签: python flask sqlalchemy flask-restless

假设我在SqlAlchemy中有两个模型:

  • UserType
  • User

User拥有UserType

的外键

我已正确配置flask-restless以将这些模型作为API端点提供:

  • /api/user
  • /api/user_type

但默认情况下,当我访问其中任何一个端点时,我会获得与响应中每个对象关联的相关数据:

  • 每个User都有相应的UserType对象嵌套在响应中
  • 每个UserType都有一个嵌套在回复中的User

随着数据的增长,这肯定会导致很多开销。如果我只想获取系统支持的UserType列表,则所有相关用户都将返回。通常,API会为相关资源生成链接:

  • /api/user/1/user_type
  • /api/user_type/1/users

有没有人从烧瓶不安的反应中得到这些链接?

2 个答案:

答案 0 :(得分:0)

看起来这是一个在GitHub上长时间活跃的已知问题。不确定开发人员是否计划修复它:

https://github.com/jfinkels/flask-restless/issues/168#issuecomment-69821642

我最终选择flask-restful并建立自己的终端。

答案 1 :(得分:0)

现在从发布 0.17.0

开始实施

如果您的User模型如下所示:

class User(Base):
    id = Column(Integer, primary_key=True)
    username = Column(String)
    user_type_id = Column(Integer, ForeignKey("user_type.id"))
    user_type = relationship(UserType, backref=backref('users'))

您的UserType模型如下:

class UserType(Base):
    id = Column(Integer, primary_key=True)
    type = Column(String)
    description = Column(String)

然后,您可以通过向...发送GET请求来获取特定users的所有user_type

<强> / API / USER_TYPE / 1 /用户

...其中后缀 / users / 由传递给backref=backref('users')的{​​{1}}属性指定,用于{{user> 列中的{em> user_type 列1}}, 1 是要查询的 user_type relationship()