API POST Response 仅读取转换为列表的数据帧的最后一条记录,如何更改?
Posted
技术标签:
【中文标题】API POST Response 仅读取转换为列表的数据帧的最后一条记录,如何更改?【英文标题】:API POST Response only reading last record of dataframe converted to list, how to change? 【发布时间】:2018-09-01 05:27:19 【问题描述】:我正在尝试通过 POST 命令将数据传递到 API。 API 仅采用 Content-Type: application/x-www-form-urlencoded
format 格式的数据。我还不熟悉这种格式。可以在此处找到有关我尝试进行的特定 API 调用的信息。 https://www.activecampaign.com/api/example.php?call=contact_add
数据位于具有以下字段的数据框中。
email p[1]*
0 belle@yandex.com 1
1 apple765@yandex.com 1
2 pear432@yandex.com 1
根据文档p[1]
是指定我希望数据进入哪个列表的字段。
我运行的代码如下:
df1 = pd.DataFrame('email':['belle@yandex.com','apple765@yandex.com','pear432@yandex.com'], 'p[1]*':1)
#I think Content-Type: application/x-www-form-urlencoded formated data takes list format#
df1 = df1.to_dict(orient = 'list')
url = 'https://URL/admin/api.php?api_action=contact_add&api_output=json&api_key=123ABC'
resp = requests.post(url, data=df1, headers=headers)
print(resp.text)
响应对象resp
返回 200,但在电子邮件活动列表中,我只看到第 2 行中的最后一个电子邮件地址仅出现。为什么是这样 ?我究竟做错了什么?
提前谢谢你。
【问题讨论】:
【参考方案1】:基本上服务器通过发送 201 状态码来确认对象的创建,但有些服务器返回 200。我想知道您是否已经创建了这些对象... 我也不确定您是否需要 p[1] 之后的星号(在快速查看文档后,我认为 p 应该只指向列表 ID),但这需要您检查。
【讨论】:
你说得对,不需要星号。现在我不知道如何将每个电子邮件地址的数据帧迭代到 api 中。任何想法如何做到这一点? 所以看起来你可以在每个请求中添加一条记录,所以如果你想遍历 Dataframe 中的电子邮件,你应该这样做:for email in df1['email'] : # 发送请求 resp = requests.post(url, data='email': email, 'p[1]':1) 太棒了!很高兴能帮助交配!以上是关于API POST Response 仅读取转换为列表的数据帧的最后一条记录,如何更改?的主要内容,如果未能解决你的问题,请参考以下文章
Express起步 - 路由基础 - 请求对象request - 响应对象response - 增删改查API案例