【发布时间】:2022-01-07 20:01:56
【问题描述】:
我正在创建实用程序,它将从数据库中提取 API 定义和相关的请求参数。然后将该信息推送到 CSV(这是要求)。直到这部分我完成了。现在 CSV 我看起来像这样:
(抱歉添加 csv 图像.. 这个编辑器不允许我以默认表格格式添加相同的数据)
现在,我想将这些标头和列中的相应值作为 api 请求参数传递。 如果 API 没有配置值,那么我们可以忽略并传递空正文。
Ex1:
http://localhost:8080/cm/apis/API6%2Ftoday?username=MyTestUser70
{ "paramsR": {
"M1": "70878-008",
"C1": "467345-121",
"T1":"Hi 2"
}
}
Ex2:
http://localhost:8080/cm/apis/API3%2Ftoday?username=MyTestUser70
{ }
我正在尝试的看起来像这样:
with open('apis.csv') as csv_file1:
csv_apis_read = csv.DictReader(csv_file1)
fields = csv_apis_read.fieldnames
api_csv = list(csv_apis_read)
for apis in api_csv:
#print(fields)
#print(apis .get('M1'))
#apis.get('S1')
#apis.get('C1')
final_url = f"{http://localhost:8080}{urllib.parse.quote_plus(apis.get('APIDef'))}"
#req_json = {"paramsR": {"S1" : apis.get('S1')}}
req_json = {"paramsR": {"M1" : apis.get('M1')}}
username = {"username": "MyTestUser70"}
headers = {'Accept': "application/json",'Content-Type': "application/json",'Accept-Encoding': "gzip, deflate",'Cache-Control': "no-cache",'Token': "null"}
response = requests.request("POST", f_url, json=req_json, headers=headers, params=uid)
print(response.request.url)
print(response.request.body)
print(response.request.headers)
print(response.text)
Q1.如何动态地将标头值作为有效负载和关联列值作为请求参数传递给所有可用 API(无需在代码中硬编码标头值。)?
注意:标题值不固定。在重新生成第一步标题和相关值更新时提到的 csv 之后。这就是为什么我希望以动态方式生成此密钥对组合,而不是硬编码和预定义任何带有标题和列值的内容。
Q2.在传递请求参数时,有什么方法可以从 M1 和 T1 列值中删除 ['']?
有人可以指导我吗? 提前谢谢你。
【问题讨论】:
标签: python python-3.x dataframe csv python-requests