近日在做項目的時候需要通過flask獲取前端傳過來的參數
對GET
和POST
兩種請求方式的參數獲取方式進行梳理。
request
對象是從客戶端向服務器發出請求,包括用戶提交的信息以及客戶端的一些信息。
客戶端可通過HTML表單或在網頁地址后面提供參數的方法提交數據,然后通過request
對象的相關方法來獲取這些數據。
request
請求總體分為兩類:
-
get
請求GET
把參數包含在URL
中,訪問時會在地址欄直接顯示參數不安全,且參數大小比較小 -
post
請求
參數通過request body
傳遞
常見的方式
falsk獲取參數的方式
request.form.get("key", type=str, default=None) request.args.get("key") # 獲取get請求參數 request.values.get("key") # 獲取所有參數
這三種方法基本可以滿足大部分的請求
GET
請求方式獲取參數
當采用GET
請求方式時,參數直接顯示在請求連接中,可以使用兩種獲取參數的方式:
request.args.get('key')
request.values.get('key')
@app.route('/index', methods=["GET"]) def hello_world(): # put application's code here if request.method == "GET": content = request.args.get("key") content = request.values.get("key")
POST
請求方式獲取參數
客戶端在發送post
請求時,數據可以使用不同的Content-Type
來發送。
比如:
以 application/json 的方式 ,請求body體的內容就是{"a": "b", "c": "d"}
以 application/x-www-form-urlencoded 的方式,則body體的內容就是 a=b&c=d
在Postman軟件中,可以方便的查看參數是以什么形式發送的,對應的Content-Type是什么。
Body中選擇“raw”,則對應的Headers中的“Content-Type”是“application/json”,參數形式是{"content":"很好"}
Body中選擇“x-www-form-urlencoded”,則對應的Headers中的“Content-Type”是“application/x-www-form-urlencoded”,參數形式是Key-Value形式。
Body中選擇“form-data”, 則對應的Headers中的“Content-Type”是“multipart/form-data”,參數形式是Key-Value。
具體位置如下圖:
POST
請求不同Content-Type
的處理方式
Content-Type
為 application/json
,獲取json
參數
獲取的是序列化后的參數,一般情況下滿足使用,不需要json.loads()
來序列化。
打印出結果就是json
串,如{'name':'lucy', 'age':22}
Content-Type
為 application/json
,獲取json原始參數
request.get_data()
獲取的原始參數,接受的是type是'bytes
’的對象,如:b{'name':'lucy', 'age':22}
Content-Type
為application/x-www-form-urlencoded
Content-Type
為multipart/form-data
,獲取表單參數
可以使用request.form.get('content')
或者 request.form['content']
來獲取參數
代碼示例
轉自:https://blog.csdn.net/ling620/article/details/107562294