使用additional lookups我可以通过文档中所述的辅助端点访问所需端点的给定文档:
除了默认的标准项目端点
/<resource>/<ID_FIELD_value>
,您可以选择定义辅助, 只读,端点如/<resource>/<person_name>
。你是这样做的 定义由两个项字段和url组成的字典。前者 是用于查找的字段的名称。如果是字段类型(如 在资源模式中定义的)是一个字符串,然后你输入一个URL规则 在网址中。如果它是一个整数,那么你只需省略url 自动处理。有关用法示例,请参阅下面的代码段 这个功能。
所以回顾一下文档中给出的例子:
people = {
# 'title' tag used in item links. Defaults to the resource title minus
# the final, plural 's' (works fine in most cases but not for 'people')
'item_title': 'person',
# by default, the standard item entry point is defined as
# '/people/<ObjectId>/'. We leave it untouched, and we also enable an
# additional read-only entry point. This way consumers can also perform
# GET requests at '/people/<lastname>'.
'additional_lookup': {
'url': 'regex("[\w]+")',
'field': 'lastname'
},
# We choose to override global cache-control directives for this resource.
'cache_control': 'max-age=10,must-revalidate',
'cache_expires': 10,
# we only allow GET and POST at this resource endpoint.
'resource_methods': ['GET', 'POST'],
}
由于lastname
被设置为辅助端点,因此我可以通过文档ID(默认值)或存储文档的people
键访问lastname
端点
假设每个人都有唯一的lastname
和唯一的nickname
。是否有可能定义多个附加查询以便通过lastname
和nickname
进行访问?
然而,这个例子只是为了表明我在寻找什么。在我的实际用例中,我有一个包含不同产品信息的数据库,我希望能够通过英语和德语标题访问这些信息,这样我就能保证所有额外的查找都会产生唯一的文档密钥。
答案 0 :(得分:3)
您不能向同一个端点添加多个附加查找。但是,您可以使用多个端点消耗相同的数据源。
多个API端点可以定位到同一个数据库集合。例如,您可以设置
/admins
和/users
来读取和写入数据库中的同一个人集合。
引用来自Advanced Datasource Patterns。所以你可以简单地拥有/books/english/<title>
和/books/german/<title>
。两个端点仍将使用相同的数据库集合。
根据您的架构设计,您可能还会转到Sub Resources路径并设置/products/<language>/books/<title>
之类的内容。