使用Python eve创建资源时如何在请求中禁止“ _id”?

问题描述 投票:1回答:1

我正在使用Python Eve来实现REST API。

[使用POST创建资源时,似乎我可以在请求正文中为“ _id”字段传递值,只要该值适合Mongo的ObjectId格式,Eve就会使用传入的值作为资源的ID 。

是否有任何方法可以禁用此行为?基本上,我希望ID由后端生成,并且不希望允许客户端进行设置。我检查了所有可用的配置选项,但在这方面没有找到任何选项。

谢谢,Raghu

eve
1个回答
0
投票

不知道如何禁用,但是您可以通过使用pre_post钩子来检查post正文中的字段来避免,如果找到则中止。像这样的东西:

from flask import abort

def on_post_check__id(resource, request):
    # handling bulk inserts
    body = request.json if type(request.json) == list else [request.json]
    for item in body:
        if '_id' in item:
            abort(422, '_id not allowed in body.')

app = Eve()

app.on_pre_POST += on_post_check__id
app.run()
© www.soinside.com 2019 - 2024. All rights reserved.