POST请求负载form-data表单数据需要同步修改header的Content-type

需要读公司的一个接口,显示负载是“表单数据”

post请求负载form-data表单数据
一开始没注意类型,按照公司其他接口的情况用了json,结果返回的数据时间阶段没有体现dct的要求,脚本如下(错误示范)

from requests import post
from json import dumps
url = 'https://.../export'
dct = {
    'startFlowTime': '2023-08-01 00:00',  # 希望在返回结果中体现的时间段要求
    'startFlowEndTime': '2023-08-01 23:59',  # 希望在返回结果中体现的时间段要求
}
hdr = {
	...
}
res = post(url, headers=hdr, data=dumps(dct))  # dumps针对json格式传数,这里是form-data,不适用

问了研发小兄弟才知道图1所示的是form-data类型,在python.requests里面需要处理一下,还需要在负载form-data的同时在headers里附加一个content-type值,二者缺一不可否则会报错
form-data类型的负载需要同步修改header的Contet-type

完整脚本如下:

from requests import post
from requests_toolbelt import MultipartEncoder  # 字典转form-data包
url = 'https://.../export'
dct = {
    'startFlowTime': '2023-08-01 00:00',
    'startFlowEndTime': '2023-08-01 23:59',
}
fls = MultipartEncoder(dct)  # 负载字典转form-data
hdr = {
    'Content-Type': fls.content_type,  # 自动生成的content-type必须装进header里
}
res = post(url, headers=hdr, data=fls)  # 同时调整headers和data,正常调用

完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
导出Excel表单接口一次性导出万条数据可能会导致服务器负载过高,甚至导致程序崩溃。因此,我们通常建议将数据分批次导出。以下是一个简单的示例代码,可以将数据分批次导出到Excel文件中: ``` import pandas as pd def export_data_to_excel(start, end): # 从数据库中获取数据,并根据起始和结束位置进行分页查询 data = get_data_from_database(start, end) # 将数据转换为DataFrame格式 df = pd.DataFrame(data) # 将DataFrame写入Excel文件中 writer = pd.ExcelWriter('data.xlsx', engine='xlsxwriter') df.to_excel(writer, index=False) writer.save() # 每批次导出的数据数量 batch_size = 1000 # 获取数据总量 total_count = get_total_count_from_database() # 分批次导出数据 for i in range(0, total_count, batch_size): start = i end = i + batch_size export_data_to_excel(start, end) ``` 在上面的代码中,我们首先定义了一个 `export_data_to_excel` 函数,用于将数据导出到Excel文件中。然后,我们设置了一个每批次导出的数据数量 `batch_size`,并通过 `get_total_count_from_database` 函数获取了数据的总量。 接下来,我们通过一个循环来分批次导出数据。在每次循环中,我们计算出本批次数据的起始位置和结束位置,并调用 `export_data_to_excel` 函数将数据导出到Excel文件中。 需要注意的是,上面的代码仅供参考,具体实现可能需要根据实际情况进行调整。另外,如果数据量非常大,可能需要使用异步方式导出数据,以避免阻塞服务器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值