Как запретить "_id" в запросе при создании ресурсов, используя Python eve? - PullRequest
1 голос
/ 16 апреля 2020

Я использую Python Eve для реализации REST API.

При создании ресурса с помощью POST, кажется, что я могу передать значение для поля "_id" в теле запроса и, если это значение соответствует формату Mon go ObjectId, Ева использует передается в качестве идентификатора ресурса.

Есть ли способ отключить это поведение? По сути, я хочу, чтобы идентификаторы генерировались серверной частью, и не хочу, чтобы клиенты устанавливали их. Я проверил все доступные параметры конфигурации и не нашел ничего в этом отношении.

Заранее спасибо, Рагху

1 Ответ

0 голосов
/ 17 апреля 2020

Не знаю, как отключить, но вы можете избежать этого, используя ловушку pre_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()
...