用Flask创建API响应

2024-06-16 19:14:09 发布

您现在位置:Python中文网/ 问答频道 /正文

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

  • UserType
  • User

User有一个UserType的外键

我已经正确地配置了flask Entertaint,以将这些模型作为API端点:

  • /api/user
  • /api/user_type

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

  • 每个User在响应中嵌套了相应的UserType对象
  • 每个UserType在响应中嵌套了一个User的集合

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

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

有没有人从“烧瓶不安的反应”中得到这些联系?在


Tags: 数据对象模型apiflasksqlalchemytype情况
2条回答

这似乎是一个在GitHub上长期活跃的已知问题。不确定开发商是否计划修复:

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

最后我使用了flask-restful并构建了自己的端点。在

现在从版本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模型看起来像:

^{pr2}$

然后,您可以通过发出GET请求来获取特定user_type的所有users,方法是向。。。在

/api/用户类型/1/用户

…其中后缀/users/由传递给relationship()backref=backref('users')属性为User中的用户类型列指定,1是被查询的用户类型id。在

相关问题 更多 >