【Python Flask實戰(zhàn)】獲取HTTP請求數(shù)據(jù)
客戶端通過Url訪問服務(wù)端程序,會發(fā)送給服務(wù)端兩類信息,一類是HTTP請求頭,另外一類就是請求數(shù)據(jù)。
一般HTTP請求會通過GET方法和POST方法向服務(wù)端提交數(shù)據(jù)。因此,服務(wù)端程序需要獲得客戶端的這些請求數(shù)據(jù),然后會做進一步的處理。例如,如果服務(wù)端要想對客戶端的類型(使用的什么瀏覽器)做一下統(tǒng)計,就需要獲取HTTP請求頭中的User-Agent字段的值。如果要得到客戶端表單提交的數(shù)據(jù),就要在服務(wù)端獲取GET請求或POST請求的數(shù)據(jù)。
讀取POST請求在后面的文章會詳細介紹,本文先看一個如何讀取HTTP請求頭和GET請求的數(shù)據(jù)。在Flask中讀取HTTP請求頭和GET請求的數(shù)據(jù)需要導(dǎo)入flask模塊中的一個全局變量request,然后使用request.headers.get(...)讀取HTTP請求頭數(shù)據(jù)。get方法的參數(shù)就是HTTP請求頭字段的名稱。使用request.args.get(...)讀取GET請求中的某個字段的值。get方法的參數(shù)值就是GET請求的字段名稱。
本例編寫了兩個路由,分別用來讀取HTTP請求頭數(shù)據(jù)和GET請求數(shù)據(jù)。
- from flask import Flask
- from flask import request
- app = Flask(__name__)
- # 根路由,用來讀取HTTP請求頭數(shù)據(jù)
- @app.route('/')
- def index():
- # 讀取HTTP請求頭的User-Agent字段值
- user_agent = request.headers.get('User-Agent')
- return '<h1>Your browser is %s</h1>' % user_agent
- # 用于讀取GET請求數(shù)據(jù)的路由
- @app.route('/abc')
- def abc():
- # 讀取GET請求中的arg字段值
- value = request.args.get('arg')
- return '<h1>arg = %s</h1>' % value
- if __name__ == '__main__':
- app.run()
運行程序,然后在瀏覽器地址欄中輸入如下的Url。
- http://localhost:5000
訪問上面的Url后,會在瀏覽器中輸出如圖1所示的信息。要注意的是,這個輸出信息會根據(jù)讀者使用的瀏覽器不同而有所差異。但都會描述了讀者使用的瀏覽器類型。例如,本例使用Chrome瀏覽器進行測試,所以輸出信息會出現(xiàn)Chrome以及對應(yīng)的版本號。
圖1 返回瀏覽器類型
接下來在瀏覽器地址欄輸入如下的Url。
- http://localhost:5000/abc?arg=hello
會在瀏覽器中輸出如圖2所示的內(nèi)容。
圖2 返回GET請求參數(shù)值
本文轉(zhuǎn)載自微信公眾號「極客起源」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系極客起源公眾號。