У меня есть вспомогательный метод в приложении Flask, который используется несколькими конечными точками для получения ресурса. Чтобы избежать многократных вызовов redirect_url
, я хочу иметь возможность перенаправлять только из этого вспомогательного метода. Выбрасывание исключения RequestRedirect
, как показано на рисунке here, корректно возвращает ответ 301
, но не устанавливает ошибку Content-Location
. Чтобы обойти это, я добавил крючок after_this_request
, который устанавливает URL-адрес для этого ответа.Флажок перенаправляет извне API-функции
Кажется, что это работает правильно, но мне было интересно, есть ли более элегантный способ сделать это.
обезличенного вспомогательный метод:
def get_resource(resource_id):
try:
# Some logic
except:
@after_this_request
def add_header(response):
response.headers['Content-Location'] = url
return response
raise RequestRedirect(new_url='/')