Python Eve中对资源和项目端点的不同投影

时间:2018-12-03 23:20:04

标签: python mongodb eve

我是RESTful API的新手。所以请忍受我的无知。

假设我有一个包含一些文档的MongoDB集合foobars。结构如下: [{'_id': 1, 'foo': 1, 'bar': 1}, {'_id': 2, 'foo': 2, 'bar': 2},...]

我想设置两个端点:

  • GET /api/foobars, 这应该返回_id的列表,即[{'_id': 1}, {'_id': 2}]
  • GET /api/foobars/1,这将返回其'_id'==1{'_id': 1, 'foo': 1, 'bar': 1}的单个文档。

我在域中设置了一个投影

DOMIAN = {
    'foobars': {
        'schema': {...},
        'datasource': {
            'projection': {'_id': 1}
        }
    }
}

这在资源级别上按预期工作。但是在项目级别,它仍然仅返回投影的字段。

如何正确定义投影?是否应为同一资源设置多个端点?谢谢!

1 个答案:

答案 0 :(得分:0)

我想出了一种解决方法。也许不是RESTful方式,因为它似乎是多余的。

DOMAIN = {
    'foobar_list': {
        'schema': {...},
        'datasource': {'source': 'foobars'},
        'projection': {'_id': 1}
    },
    'foobar_item': {
        'schema': {...},
        'datasource': {'source': 'foobars'},

        # Disable resource level endpoint
        'resource_methods': [],
    },
}