2015-08-31 2 views
1

У меня есть вспомогательный метод в приложении 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='/') 

ответ

0

Если он находится за пределами вашего API, как правило, вы бы перенаправить на страницу 404. Вот пример:

@app.errorhandler(404) 
def page_not_found(e): 
    return render_template('404.html'), 404 
Смежные вопросы