1. 程式人生 > 其它 >python實現post請求的一個小小的需求

python實現post請求的一個小小的需求

技術標籤:pythonpythonpostjson

測試遇到個很小的需求:傳送post請求,但只需要改變其中某幾個鍵的鍵值。
那首先呢,我們先搞一下單條資料進行post請求。
一、單條資料
現成的方法,直接用就ok了。

import requests
import json
#初始化payload
payload ={
	"a": "5b71249736de6472c6e6832c484fb20210203010",
	"b": "test",
	"c": [
		"c1",
		"c2"
, "c3" ] } data=json.dumps(payload) r=requests.post("post請求地址", data=data, headers={"Content-Type": "application/json"}) print(r.text)

如果有很多條資料,我們該如何呢。
二、多條請求資料
我們可以通過txt來實現,讀出來後逐條請求介面。
txt資料如圖所示:
在這裡插入圖片描述

import requests
import json
#你的txt檔案所在的路徑
path = r'D:\shuzilm\compare\post.txt'
f = open(path) for line in f: #debug時發現每行資料有換行符,我們把換行符替換了 data=line.replace('\n','') r=requests.post("post請求地址", data=data, headers={"Content-Type": "application/json"}) print(r.text)

現在想想我們這個小小需求吧,只需要修改其中幾個鍵的鍵值,那我們可以替換這幾個鍵的鍵值就行。
三、替換某些鍵的鍵值
txt中我們可以只存需要修改的鍵的鍵值,這樣只用初始化一次body就夠了,txt如圖所示:

在這裡插入圖片描述

import requests
import json
#初始化payload
payload ={
	"a": "5b71249736de6472c6e6832c484fb20210203010",
	"b": "test",
	"c": [
		"c1",
		"c2",
		"c3"
	]
}
path = r'D:\shuzilm\compare\post.txt'
f = open(path)
for line in f:
    #debug時發現每行資料有換行符,我們把換行符替換了
    data1=line.replace('\n','')
    #txt中兩列資料我們按|分隔變為陣列
    data2 = data1.split('|')
    #多列資料我們賦值就變得簡單了
    payload["a"] = data2[0]
    payload["b"] = data2[1]
    r = requests.post("post請求地址", json=payload, headers={"Content-Type": "application/json"})
    print(r.text)

在新的版本的requests裡面,除了對dict格式去編碼以外,還可以使用json格式直接去傳遞,然後它就會被自動編碼。這是 2.4.2 版的新加功能:
這樣子是不是很簡單就可以去實現了呢,而不需要像一里面需要轉換為string之類的呢。