Flask-Restless API"嵌套"排除/包含列

时间:2015-02-02 11:19:02

标签: python flask-sqlalchemy flask-restless

我有一个api到一个有2个模型的数据库。模型的关系如下:

  • 每个产品都归一个实体所有。 (很多-1)
  • 每个实体拥有1个或更多产品。 (1多)

这些在models.py文件中定义如下:

class Product(db.Model):
    some_other_attributies = redacted
    entity_id              = db.Column(db.Integer, db.ForeignKey('entity.id'))


class Entity(db.Model):
    id       = db.Column(db.Integer, primary_key = True)
    name     = db.Column(db.String(64), unique=True)
    # Relationships
    products = db.relationship('Product', backref=db.backref('entity'))

然后我使用了来自flask-restless的inbuild create_api来生成api端点,如下所示:

manager.create_api(models.Entity,
include_columns = ['id'],
collection_name = 'entities',
methods=['GET', 'POST', 'PUT', 'DELETE'],
preprocessors={ etc..


manager.create_api(models.Product,
url_prefix = '/api/v1',
include_columns = ['imei'],
collection_name = 'products',
methods=['GET', 'POST','PUT', 'DELETE'],
preprocessors= { etc...

我故意只在响应中包含产品和实体的主键。

如果我GET hostname/api/v1/products,我会得到仅imei的列表。 如果我GET hostname/api/v1/entities,我会得到仅id的列表。

如果我执行`GET hostname / api / v1 / products / {product_id} / entity,它将从拥有该产品{product_id}的实体返回所有信息。这包括返回拥有产品{product_id}的实体拥有的每个产品的信息。

在使用以这种方式“嵌套”的端点时,如何确保仍然可以观察到include_columnsexclude_columns? 支持在关系中包含特定属性,即:

`include_columns = [Entity.id]'etc ...适用于对“基本”URL的请求,即:hostname / api / v1 / products,但不适用于“嵌套”URL,即: 主机名/ API / V1 /产品/ 1 / enities

有什么建议吗?

0 个答案:

没有答案