1. 程式人生 > >python——flask如何截獲所有訪問,以及before_request、after_request修飾器

python——flask如何截獲所有訪問,以及before_request、after_request修飾器

在學習著用flask開發安卓後天介面時,遇到一個需求,就是想截獲所有請求,即在所有請求進入app.route裝飾的函式前先被處理一次。

經過在網上查詢資料後,知道了@before_request、@after_request這兩個方法,示例:

@app.before_request
def before_request():
    ip = request.remote_addr
    url = request.url
    print ip,
    print url

before_request()函式被app.before_request修飾以後,每一次請求到來後,都會先進入函式before_request()中,如上程式碼,獲取請求的ip以及url,並打印出來,執行完畢後請求才會正常進入到app.route修飾的函式中響應,如果有多個函式被app.before_request修飾了,那麼這些函式會被依次執行。

app.before_request修飾器在開發中用處非常大,比如判斷某個ip是否有惡意訪問行為,從而進行攔截等操作。

此外同理,app.after_request修飾器是在使用者請求得到函式響應後被執行,不過需要注意的是這個執行是在函式返回資料前被呼叫,即請求已經被app.route修飾的函式響應過了,已經形成了response,但還未返回給使用者的時候,呼叫的。