『居善地』接口測試 — 4、使用Requests庫發送GET請求


Requests庫GET請求是使用HTTP協議中的GET請求方式對目標網站發起請求。

(不帶參數的GET請求請看上一篇文章的練習)

1、使用Requests庫發送帶參數的GET請求

使用Get請求方式發送帶參數請求時,是params=參數字典,而不是data=參數字典data=參數字典是Post請求方式的參數形式。

"""
1.學習目標
    必須掌握requests中帶參數的get請求
2.語法
    requests.get(url,parmas=None)
    2.1 不帶參數的get請求(看上一篇中的練習)
    2.2 帶參數的get請求(如下)
3.操作步驟
    # 1.導入requests庫
    # 2.明確請求地址
    # 3.明確請求參數
        data = {key:value}  字典格式
    # 4.發送請求獲取返回數據
4.需求
    使用requests庫發送一個帶參數的get請求
"""
# 1.導入requests庫
import json
import requests

# 2.明確請求地址
url = "http://127.0.0.1:8000/api/departments/"
# 3.明確請求參數
# 是一個字典類型數據
data = {"$dep_id_list": "10,11"}
# 4.發送請求
response = requests.get(url=url, params=data)
# print(response.json())

# 將python對象轉換為json字符串(格式化放回數據)
result = json.dumps(response.json(), indent=2, ensure_ascii=False)
# print(type(result))  # 字符串類型
print(result)


"""
結果:
{
  "count": 2,
  "next": null,
  "previous": null,
  "results": [
    {
      "dep_id": "10",
      "dep_name": "超神_10",
      "master_name": "陸興雷_10",
      "slogan": "帶頭學習"
    },
    {
      "dep_id": "11",
      "dep_name": "超神_11",
      "master_name": "陸興雷_11",
      "slogan": "帶頭學習"
    }
  ]
}

"""

2、查看GET請求的內容

我們可以通過訪問Httpbin來查看或者調試Requests庫發送請求的內容。

還是以上面的例子為例:

# 1.導入requests庫
import json
import requests

# 2.明確請求地址
# url = "http://127.0.0.1:8000/api/departments/"
url = "http://127.0.0.1:9999/get"
# 3.明確請求參數
# 是一個字典類型數據
data = {"$dep_id_list": "10,11"}
# 4.發送請求
response = requests.get(url=url, params=data)
# 這種方式調用也可以
# response = requests.get(url='http://httpbin.org/get?name=admin&age=20')  
# print(response.json())

# 將python對象轉換為json字符串(格式化放回數據)
result = json.dumps(response.json(), indent=2, ensure_ascii=False)
# print(type(result))  # 字符串類型
print(result)


"""
接口返回結果:
{
  "args": {
    "$dep_id_list": "10,11"
  },
  "headers": {
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate",
    "Connection": "keep-alive",
    "Host": "127.0.0.1:9999",
    "User-Agent": "python-requests/2.18.4"
  },
  "origin": "127.0.0.1",
  "url": "http://127.0.0.1:9999/get?%24dep_id_list=10%2C11"
}

我們可以看到args屬性中有參數內容,
如果是不帶參數的Get請求,args屬性中是沒有內容的,如下:

{
  "args": {},
  "headers": {
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate",
    "Connection": "keep-alive",
    "Host": "127.0.0.1:9999",
    "User-Agent": "python-requests/2.18.4"
  },
  "origin": "127.0.0.1",
  "url": "http://127.0.0.1:9999/get"
}
"""

3、帶請求頭、參數的Get請求

例如上面例子中,請求頭信息中 "User-Agent": "python-requests/2.18.4",我們需要改變請求頭中User-Agent屬性的內容,看下面例子:

# 1.導入requests庫
import json
import requests

# 2.明確請求地址
# url = "http://127.0.0.1:8000/api/departments/"
url = "http://127.0.0.1:9999/get"
# 3.明確請求參數
# 是一個字典類型數據
data = {"$dep_id_list": "10,11"}

# 明確請求頭信息
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3775.400 QQBrowser/10.6.4209.400"}

# 4.發送請求
response = requests.get(url=url, params=data, headers=headers)
# print(response.json())

# 將python對象轉換為json字符串(格式化放回數據)
result = json.dumps(response.json(), indent=2, ensure_ascii=False)
# print(type(result))  # 字符串類型
print(result)

"""
接口返回結果:可以看到User-Agent屬性變成了我們設置的內容了。
{
  "args": {
    "$dep_id_list": "10,11"
  },
  "headers": {
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate",
    "Connection": "keep-alive",
    "Host": "127.0.0.1:9999",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3775.400 QQBrowser/10.6.4209.400"
  },
  "origin": "127.0.0.1",
  "url": "http://127.0.0.1:9999/get?%24dep_id_list=10%2C11"
}

"""

除此之外Get請求還有很多請求參數,如timeout你可以設置請求時間,如果超過這個時間變自行結束請求,可以利用此判斷請求代理的相應效率,避免在某些錯誤請求上浪費過多的時間。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM