我正在使用Python Eve来实现REST API。
[使用POST创建资源时,似乎我可以在请求正文中为“ _id”字段传递值,只要该值适合Mongo的ObjectId格式,Eve就会使用传入的值作为资源的ID 。
是否有任何方法可以禁用此行为?基本上,我希望ID由后端生成,并且不希望允许客户端进行设置。我检查了所有可用的配置选项,但在这方面没有找到任何选项。
谢谢,Raghu
不知道如何禁用,但是您可以通过使用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()