[Python EVE]: Чтение значений параметров запроса в Python EVE

Я разрабатываю веб-приложение, используя Python Eve. У меня есть несколько конечных точек. У меня есть конечная точка с именем person, есть поле в схеме db userid. Я хочу заполнить это поле, используя случайную строку, которая генерируется после чтения параметров запроса.

Мой вопрос в том, как я могу прочитать эти параметры. Я не смог найти аналогичный синтаксис в документации Eve.

Любая помощь в этом отношении будет полезной


person tushar_sappal    schedule 16.04.2015    source источник


Ответы (1)


Я думаю, что-то вроде этого будет работать:

from eve import Eve
from flask import request

def update_inbound_docs(items):
    # retrieve request parameter, if present
    my_arg = request.args.get('key') 
    for document in items:
        # update document 'userid' field according to my_arg
        # value. replace with custom logic.
        document['userid'] = 'bingo' if my_arg else 'ack!'

app = Eve()

# bind your callback to the POST method for 'persons'
# endpoint. it will be invoked after a POST request 
# has been validated and before db is updated, so any 
# update to 'items' will be persisted.
app.on_insert_persons += update_inbound_docs

app.run()

Eve — это приложение Flask, поэтому вы можете использовать объект Flask request по своему желанию. Дополнительные сведения см. в разделе перехватчики базы данных.

person Nicola Iarocci    schedule 16.04.2015
comment
Я только что попробовал фрагмент кода, который вы предоставили. Я получаю следующую ошибку: «app_on_insert_persons» не определено. - person tushar_sappal; 16.04.2015
comment
Я попробовал предоставленное вами решение. Я не могу изменить параметры запроса и не могу распечатать параметры запроса. @nicola-iarocci Пожалуйста, помогите - person tushar_sappal; 16.04.2015
comment
когда каким-то образом я пытаюсь обновить параметры запроса, я получаю ‹!DOCTYPE HTML PUBLIC --//W3C//DTD HTML 3.2 Final//EN› ‹title›500 Internal Server Error‹/title› ‹h1›Internal Server Error‹ /h1› ‹p›Сервер обнаружил внутреннюю ошибку и не смог выполнить ваш запрос. Либо сервер перегружен, либо ошибка в приложении.‹/p› - person tushar_sappal; 20.04.2015