cURL-POST请求不与python请求等效

2024-09-28 01:28:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个curlPOST请求,它按预期在终端中返回一个CSV。RJMetrcisdocumentation中提供了以下格式(请参见“导出图形数据”)。下面是bash中的curl请求:

curl --data-raw "format=csv&includeColumnHeaders=1" -H "X-RJM-API-Key: myapikey" https://api.rjmetrics.com/0.1/figure/12345/export

或者,使用-d代替--data-raw也可以

但是,当在Python中使用requests在前一个post的帮助下复制时,会返回一个错误:

url = "https://api.rjmetrics.com/0.1/figure/12345/export"

payload = "'{\"format\":\"csv&includeColumnHeaders=1\"}'"
headers = {
  'X-RJM-API-Key': 'myapikey'
}

response = requests.request("POST", url, headers=headers, params=payload)
response.text

'{"Error":"Invalid Argument: CSV is currently the only supported format for SQL Reports"}'

这是API返回的一个特定错误,指示未请求CSV格式(当bash命令中省略了-d时,会引发相同的错误)。但是,这两个请求在语法上是相同的。这里的Python问题可能是什么?是否有传递参数的首选方法


Tags: csvkeybashapiformatdataraw格式
1条回答
网友
1楼 · 发布于 2024-09-28 01:28:35
import requests

data = {
    'format': 'csv',
    'includeColumnHeaders': 1
}

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0',
    'X-RJM-API-Key': 'yourapi'
}


def main(url):
    r = requests.post(url, data=data, headers=headers)
    print(r)


main("https://api.rjmetrics.com/0.1/figure/12345/export")

相关问题 更多 >

    热门问题