Канун питона - вернуть ответ на предварительный запрос
Я разрабатываю 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
ответ.