我有一个api到一个有2个模型的数据库。模型的关系如下:
这些在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_columns
或exclude_columns
?
支持在关系中包含特定属性,即:
`include_columns = [Entity.id]'etc ...适用于对“基本”URL的请求,即:hostname / api / v1 / products,但不适用于“嵌套”URL,即: 主机名/ API / V1 /产品/ 1 / enities
有什么建议吗?