仅使用pythonevaapi向MongoDB请求“unu items”

2024-10-03 21:32:43 发布

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

我使用一个python-eve-API(简称eve)来访问MongoDB。在插入一些示例数据之后,我使用Chrome's Postman来测试API。在

由于eve除了提供所请求的数据和HATEOAS directives之外还提供了其他信息,我只是想知道如何只请求_items-字典(如果用Python语言,请将其称为dictionary,如果使用JSON或JavaScript,则称其为object)。在

因此,示例请求http://127.0.0.1:5000/packagings/给出了如下所示的响应,我只对_items-dictionary/-object中包含的数据感兴趣。在

当然,我可以在接收并存储完整响应后提取所需的数据。 但是,有没有一种方法只请求我感兴趣的数据,以减少额外的数据提取和响应。收到数据后的数据处理?在

{
    "_links": {
        "self": {
            "href": "packagings",
            "title": "packagings"
        },
        "parent": {
            "href": "/",
            "title": "home"
        }
    },
    "_meta": {
        "max_results": 25,
        "page": 1,
        "total": 1
    },
    "_items": [
        {
            "diameter_dk": 0.0144,
            "_created": "Tue, 17 Nov 2015 21:15:37 GMT",
            "factor_fa": 2.1,
            "_id": "564b98f955c40f29843128df",
            "free_volume": 0.89,
            "title": "raschigring10x10x0.5",
            "_updated": "Tue, 17 Nov 2015 21:15:37 GMT",
            "_links": {
                "self": {
                    "href": "packagings/564b98f955c40f29843128df",
                    "title": "Packaging"
                }
            },
            "specific_weight": 920,
            "title_hr": "Raschig-Ring 10x10x0.5",
            "specific_surface": 500,
            "specific_number": 770000,
            "_etag": "bcb4080b61028405babcd960196d27208c3eabd3"
        }
    ]
}

Tags: 数据selfapi示例dictionaryobjecttitleitems
1条回答
网友
1楼 · 发布于 2024-10-03 21:32:43

您可以通过在配置设置中设置HATEOAS = False来禁用HATEOAS。这将大大减少有效负载,使其更适合您的用例。在

编辑:您还可以选择通过将回调函数挂接到on_fetched_resource事件来转换响应负载。在

from eve import Eve

def on_fetched_resource(resource, response):
    del(response['_links'])
    del(response['_meta'])

    # would result in an empty JSON document
    # del(response['_items'])

app = Eve()
app.on_fetched_resource += on_fetched_resource

if __name__ == '__main__':
    app.run()

由于响应是dict(毕竟是JSON),所以仍然需要为documents数组提供一个键。在

相关问题 更多 >