手機(jī)也能上課
1/6
獲取POST方法傳送的數(shù)據(jù)
作為一種HTTP請(qǐng)求方法,POST用于向指定的資源提交要被處理的數(shù)據(jù)。
比如: 我們?cè)谀尘W(wǎng)站注冊(cè)用戶、寫文章等時(shí)候,需要將數(shù)據(jù)傳遞到網(wǎng)站服務(wù)器中。并不適合將數(shù)據(jù)放到URL參數(shù)中,密碼放到URL參數(shù)中容易被看到,文章數(shù)據(jù)又太多,瀏覽器不一定支持太長(zhǎng)長(zhǎng)度的URL。這時(shí),一般使用POST方法。
本課程使用python的requests庫(kù)模擬瀏覽器。
安裝方法:
pip install requests
看POST數(shù)據(jù)內(nèi)容
以用戶注冊(cè)為例子,我們需要向服務(wù)器/register傳送用戶名name和密碼password。如下編寫server.py。
from flask import Flask, request
app = Flask(__name__)
@app.route('/register', methods=['POST'])
def register():
print(request.headers)
print(request.stream.read())
return 'welcome'
if __name__ == '__main__':
app.run(port=5000, debug=True)
?@app.route('/register', methods=['POST'])
?是指url?/register
?只接受POST方法??梢愿鶕?jù)需要修改methods參數(shù),例如如果想要讓它同時(shí)支持GET和POST,這樣寫:
@app.route('/register', methods=['GET', 'POST'])
瀏覽器模擬工具client.py
內(nèi)容如下:
import requests
user_info = {'name': 'Loen', 'password': 'loveyou'}
r = requests.post("http://127.0.0.1:5000/register", data=user_info)
print(r.text)
運(yùn)行server.py
,然后運(yùn)行client.py
。client.py
將輸出:
welcome
而server.py在終端中輸出以下調(diào)試信息(通過print輸出):
前6行是client.py生成的HTTP請(qǐng)求頭,由print(request.headers)輸出。
請(qǐng)求體的數(shù)據(jù),我們通過print(request.stream.read())輸出,結(jié)果是:
b'name=Loen&password=loveyou'