Канун питона - вернуть ответ на предварительный запрос

Я разрабатываю rest-api, используя python-eve. Мой объект содержит URL, описание и изображение. Пользователи могут либо вставлять, либо просматривать продукт (для вставки - пользователь просто добавляет URL-адрес, и генерируются описание и изображение).

Чтобы избежать повторяющихся обновлений - когда пользователь вставляет URL-адрес, который уже существует с помощью запроса POST, я хотел бы перенаправить его на URL-адрес элемента, соответствующего этому URL-адресу. Чтобы сделать это, я добавил этот код:

def pre_post_callback(request, lookup):
    prev_object = current_app.data.driver.db['products'].find_one({"url":lookup.values['url']})
    if prev_object:
      # here I would like to redirect the user to the /product/id of the product corresponding.

app.on_pre_POST += pre_post_callback

Однако, при добавлении одного и того же URL дважды, я продолжаю добавлять (переопределяя) существующий элемент.

Как перенаправить пользователя на уже существующий продукт из ловушки обратного вызова до публикации?

1 ответ

Если я вас хорошо понимаю, вы захотите ответить на запрос POST (запись) в виде поиска. В REST вы действительно не хотите этого делать, и Eve (будучи фреймворком REST) ​​на самом деле не подходит для этого, хотя вы могли бы достичь аналогичного результата с помощью некоторого взлома.

Что вы, вероятно, сделали бы в вашем случае установлено unique Правило для url поле, поэтому POST в конечном итоге получит 409 Conflict ответ.

Другие вопросы по тегам