【问题标题】:Creating API responses with flask-restless使用 flask-restless 创建 API 响应
【发布时间】:2015-03-11 23:05:29
【问题描述】:

假设我在 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

有没有人从不稳定的反应中得到这些链接?

【问题讨论】:

    标签: python flask sqlalchemy flask-restless


    【解决方案1】:

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

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

    我最终选择了flask-restful 并构建了自己的端点。

    【讨论】:

      【解决方案2】:

      现在从版本 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 请求来获取特定 user_type 的所有 users...

      /api/user_type/1/users

      ...其中后缀 /users/ 由传递给 relationship()Useruser_type 列的 backref=backref('users') 属性指定,并且 1 是被查询的user_typeid

      【讨论】:

        猜你喜欢
        • 2016-01-14
        • 2013-03-04
        • 2018-03-15
        • 2019-02-18
        • 2016-01-16
        • 2016-09-10
        • 2014-10-02
        • 2013-10-16
        • 2015-04-26
        相关资源
        最近更新 更多