我希望有人能帮助我使用Python请求库将这个curl请求翻译成语法。这个API应该为我提供一个票证列表。我不熟悉在Python中使用头和API键发出请求,因此我非常感谢您的帮助。非常感谢。在尝试使用基本URI时,我还得到了403状态代码
卷曲请求-更改敏感信息
curl -X POST \
--url 'https://api.myapi.io/v2/apps/mine/xxx123/data/ticket/search' \
-H 'x-api-key: myapiKEY123'\
-H 'Accept: application/json' \
-H 'Content-type: application/json' \
--data-raw '{
"startDate": "2021-03-01",
"endDate": "2021-04-12"
}'
当前的python代码
import json
import requests
API_KEY = "myapiKEY123"
client_ID = 'xxx123'
url = '/v2/apps/mine/' + client_ID + '/data/ticket/search'
params = dict(key=API_KEY, lang='en-es')
requestObject = requests.get(
url, params=params, headers=headers)
print(requestObject.status_code, requestObject.reason)
当前错误消息:
requests.exceptions.MissingSchema: Invalid URL '/v2/apps/mine/xxx123/data/ticket/search': No schema supplied. Perhaps you meant http:///v2/apps/mine/xxx123/data/ticket/search?
您的URL上没有架构(http/https),这也是一个不完整的URL:
然后将响应打印为JSON(如果它们使用JSON进行响应,这是可能的),如
response.json()
或文本response.text
。response.raise_for_status()
将检查状态代码是否指示故障(例如response code was a 400-599),并引发状态代码和错误的异常您也没有按照curl建议的格式传递API键,我在上面已经修正了这种格式。我还添加了一个超时,因为请注意,请求库在默认情况下没有超时,因此如果服务器行为不当,连接将永远阻塞,这是不好的
我还怀疑您是否应该将开始和结束日期作为查询参数传递,而不是作为请求主体中的数据传递,因此我也进行了更新。使用
params
将导致如下请求:当curl(以及我上面的示例)正在做的是在POST请求主体中以JSON的形式传递这些值时
requests.get()
将返回一个requests.Response
对象,因此将它赋给名为requestObject
的变量也有点荒谬查看以下文档:
这在代码中不是函数问题,但是by convention,函数和变量名在Python中应该是小写的,并且使用下划线来分隔术语,而不是大小写。例如,response_对象而不是responseObject,api_键而不是api_键,client_id而不是client_id。同样,这不会使代码无法工作,这只是惯例。你可以忽略它,但我想至少指出一点
要修复立即出现的错误,您传递到requests函数的url不完整。您收到的消息显示url以
/v2
开头,而它需要有完整的url,即以https://
开头对于标题问题,标题是键/值对的简单字典,大致如下:
从那里,您可以正确地将其传递到
requests.get
函数中相关问题 更多 >
编程相关推荐