python筆記8:requests模組,pythonrequests

來源:互聯網
上載者:User

python筆記8:requests模組,pythonrequests
簡介:

requests是python的一個http用戶端庫,跟urlib、urlib2類似,requests模組是基於urlib模組開發的,代碼實現更為簡潔。

模組安裝:

pip install requests ,使用requests模組時直接import requests即可。

簡單使用requests:

http協議的介面,請求方式分為get和post,這2種最為常用。請求參數常用的形式有key-value、json、檔案上傳、介面添加cookies、headers等操作。

get請求-url拼接參數:
import requestsurl = 'http://127.0.0.1:5000/gettest?username=abc'#返回結果類型是字串:{"msg": "pass"}res = requests.get(url).text

也可以使用.json(),返回結果類型是字典 (注:介面請求的傳回值類型 與介面的返回定義類型有關)

#返回結果類型是字典:{'msg': 'pass'}res_dic = requests.get(url).json()
get請求- 請求參數類型是key-value形式:
import requestsurl = 'http://127.0.0.1:5000/gettest'#請傳參類型是 name=xxx&pwd=123456data = {"username": "abc"}#返回結果類型是str:{"msg": "pass"}res = requests.get(url, data).text

也可以使用.json(),返回結果類型是字典 (注:介面請求的傳回值類型 與介面的返回定義類型有關)

#返回結果類型是字典:{"msg": "pass"}res_dic = requests.get(url, data).json()
get請求調用的介面實現如下:
 1 import flask 2 from flask import request 3 from flask import jsonify 4  5 server = flask.Flask(__name__) 6 @server.route('/gettest', methods=['get']) 7 def test1(): 8     name = request.values.get('username') 9     if name == 'abc':10         #介面傳回值類型為字典11         res = {"msg": "pass"}12         return jsonify(res)13     else:14         res = {'msg': "fail"}15         return jsonify(res)16 server.run(debug=True)
View Codepost請求 - url拼接參數
import requestsimport jsonurl = 'http://127.0.0.1:5000/gettest?username=abc'#返回結果類型是str:{"msg": "pass"}res = requests.post(url).text#可以通過json.loads將字串(json串)轉換為字典類型,方便取值操作res_dic = json.loads(res)

也可以使用.json(),返回結果類型是字典 (注:介面請求的傳回值類型 與介面的返回定義類型有關)

#返回結果類型為字典:{'msg': 'pass'},字典取值操作比較方法res_dic = requests.post(url).json()
post請求 - 傳參類型是key-value形式
import requestsimport jsonurl = 'http://127.0.0.1:5000/gettest?username=abc'data = {"username": "abc"}#返回結果類型是str:{"msg": "pass"}res = requests.post(url, data).text#可以通過json.loads將字串(json串)轉換為字典類型,方便取值操作res_dic = json.loads(res)

也可以使用.json(),返回結果類型是字典 (注:介面請求的傳回值類型 與介面的返回定義類型有關)

#返回結果類型為字典:{'msg': 'pass'},字典取值操作比較方法res_dic = requests.post(url, data).json()
post請求調用的介面實現如下:
 1 import flask 2 from flask import request 3 from flask import jsonify 4  5 server = flask.Flask(__name__) 6 @server.route('/gettest', methods=['post']) 7 def test1(): 8     #request.values.get('xxx') 這種擷取請求參數的方式,可以通過url拼接參數和key-value形式提供者。 9     name = request.values.get('username')10     if name == 'abc':11         #介面傳回值類型為字典12         res = {"msg": "pass"}13         return jsonify(res)14     else:15         res = {'msg': "fail"}16         return jsonify(res)17 server.run(debug=True)
View Code post請求- 傳參類型是json
import requestsurl = 'http://127.0.0.1:5000/register'data = {    "username": "admin",    "pwd": "123456",    "c_pwd": "123456"}#json類型傳參,post介面請求時,需要指明下請求參數是json類型,返回結果是字典:{'msg': 'ok'}res = requests.post(url, json=data).json()print(type(res), res)
 post請求- 傳參類型是json,多層json嵌套
import requestsurl = 'http://127.0.0.1:5000/register'data = {    "username": "admin",    "pwd": "123456",    "c_pwd": "123456",    "items": {        "id": 1,        "age": 18,        "sex": "man"    }}#json類型傳參,post介面請求時,需要指明下請求參數是json類型,返回結果是字典:{'msg': 'ok'}res = requests.post(url, json=data).json()
post請求調用的介面,json傳參,代碼實現如下:
 1 import flask 2 from flask import request 3 from flask import jsonify 4  5 server = flask.Flask(__name__) 6 @server.route('/register', methods=['post']) 7 def test1(): 8     #request.json,傳參類型為json,返回結果類型為字典:{'pwd': '123456', 'username': 'asdf', 'c_pwd': '123456'} 9     res_dic = request.json10     username = res_dic.get('username')11     pwd = res_dic.get('pwd')12     c_pwd = res_dic.get('c_pwd')13     if username and pwd and c_pwd:14         if res_dic.get('username') == 'admin':15             if res_dic.get('pwd') == res_dic.get('c_pwd'):16                 return jsonify({'msg': "ok"})17             else:18                 return jsonify({'msg': "密碼不一致"})19         else:20             return jsonify({'msg': "username不能註冊"})21 server.run(debug=True)
View Codepost請求 - 上傳檔案
import requestsurl = 'http://127.0.0.1:5000/upload'#上傳介面請求資料,指定上傳檔案的路徑data = {"file_name": open('E:/python_workspace/base-code/asdf.txt', encoding='utf8')}#post請求,請求參數類型是file,返回結果類型是字典res = requests.post(url, files=data).json()print(type(res), res)
post請求調用的上傳介面,代碼實現如下:
 1 import flask 2 from flask import request 3 from flask import jsonify 4 import time, os 5 from flask import send_from_directory 6 #上傳檔案介面 7 server = flask.Flask(__name__) 8 @server.route('/upload', methods=['post']) 9 def upload():10     #擷取請求參數,傳參類型是file,返回結果類型是一個對象:<class 'werkzeug.datastructures.FileStorage'> <FileStorage: '建立文字文件.txt' ('text/plain')>11     file = request.files.get('file_name', None)12     #判斷file是否為空白,若為空白則沒有上傳檔案13     if file:14         cur_time = time.strftime('%Y%m%d%H%M%S')  #擷取目前時間15         upload_name = file.filename               #擷取上傳檔案的名稱16         new_file_name = cur_time+upload_name      #給檔案重新命名,防止有重複檔案覆蓋17         # 儲存檔案,指定檔案上傳的路徑18         file.save('E:/python_workspace/base-code/'+new_file_name)19         return jsonify({"code": "ok"})20     else:21         return jsonify({"code": "請上傳檔案"})22 23 if __name__ == '__main__':24     server.run(debug=True)
View Codepost請求 - 添加cookies
import requestsurl = 'http://127.0.0.1:5000/set_cookies'data = {"username": "xiaobai", "monkey": "999"}#請求cookie參數cookie = {"token": "123456"}#介面請求,返回結果類型是字典:{'msg': 'ok'}res = requests.post(url, data=data, cookies=cookie).json()print(type(res), res)
post請求調用的添加cookie介面,代碼實現如下:
 1 import flask 2 from flask import  request 3 from flask import  jsonify 4 server = flask.Flask(__name__) 5 @server.route('/set_cookies', methods=['post']) 6 def set_cookies(): 7     print('擷取到的cookie:', request.cookies)      #{'token': '123456'} 8     print('擷取到的請求資料:', request.values)    # CombinedMultiDict([ImmutableMultiDict([]), ImmutableMultiDict([('monkey', '999'), ('username', 'xiaobai')])]) 9     token = request.cookies.get('token')10     if token:11         return jsonify({"msg": "ok"})12     else:13         return jsonify({"msg": "沒有添加cookie"})14 15 if __name__ == '__main__':16     server.run(debug=True)
View Code post請求- 添加headers
import requestsheader_url = 'http://127.0.0.1:5000/set_headers'data = {"username": "123456", "monkey": "666"}#添加header資訊header = {'Content-Type': "application/json"}#介面請求res = requests.post(header_url, data, headers=header).json()

歡迎評論~~~

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.