我正在使用Postman中的以下过滤器在Web API中进行POST请求,但是我无法使用requests库在Python中进行简单的POST请求。
首先,我正在向此URL(http://10.61.202.98:8081/T/a/api/rows/cat/ect/tickets)发送POST请求,并将下列过滤器应用于Body,选择原始和JSON(application/json)选项。请注意保留HTML标签。
数据库中存储数据的是Cassandra,根据以下链接Cassandra不等运算符,Cassandra OR运算符,Cassandra Between order by运算符,Cassandra不支持不等于,或者,介于这些操作符,所以除了使用AND之外,我无法使用这些操作符过滤URL。
基本上,我们从当前和去年得到了整套门票,然后让Python通过用户来过滤完整的集合,目前只有10个用户,这意味着这个过程重复了10次,也就不足为奇为什么会出现延迟问题...
我的问题是如何解决requests库的问题?我正在使用以下链接作为教程Requests library documentation让它工作,但似乎我的有效载荷没有被读取。
Filters in Postman
{
"filter": {
"filters": [
{
"field": "RCA_Assigned_Date",
"operator": "gte",
"value": "2017-05-31 00:00:00"
},
{
"field": "RCA_Assigned_Date",
"operator": "lte",
"value": "2017-06-04 00:00:00"
},
{
"field": "T_Subcategory",
"operator": "neq",
"value": "Temporary Degradation"
},
{
"field": "Issue_Status",
"operator": "neq",
"value": "Queued"
}],
"logic": "and"
}
}
数据库中存储数据的是Cassandra,根据以下链接Cassandra不等运算符,Cassandra OR运算符,Cassandra Between order by运算符,Cassandra不支持不等于,或者,介于这些操作符,所以除了使用AND之外,我无法使用这些操作符过滤URL。
其次,我正在使用以下代码使用requests库应用简单的过滤器。
import requests
payload = {'field':'T_Subcategory','operator':'neq','value':'Temporary Degradation'}
url = requests.post("http://10.61.202.98:8081/T/a/api/rows/cat/ect/tickets",data=payload)
但是我拥有的是全部票务数据,而不仅仅是那些没有临时降级的数据。
第三点,系统实际上是在工作的,但我们需要延迟2-3分钟才能看到数据。逻辑如下:我们有8个用户,想要查看每个用户不是临时降级的所有票务信息,然后我们执行以下操作:
def get_json():
if user_name == "user 001":
with urllib.request.urlopen(
"http://10.61.202.98:8081/T/a/api/rows/cat/ect/tickets?user_name=user&001",timeout=15) as url:
complete_data = json.loads(url.read().decode())
elif user_name == "user 002":
with urllib.request.urlopen(
"http://10.61.202.98:8081/T/a/api/rows/cat/ect/tickets?user_name=user&002",timeout=15) as url:
complete_data = json.loads(url.read().decode())
return complete_data
def get_tickets_not_temp_degradation(start_date,end_date,complete_):
return Counter([k['user_name'] for k in complete_data if start_date < dateutil.parser.parse(k.get('DateTime')) < end_date and k['T_subcategory'] != 'Temporary Degradation'])
基本上,我们从当前和去年得到了整套门票,然后让Python通过用户来过滤完整的集合,目前只有10个用户,这意味着这个过程重复了10次,也就不足为奇为什么会出现延迟问题...
我的问题是如何解决requests库的问题?我正在使用以下链接作为教程Requests library documentation让它工作,但似乎我的有效载荷没有被读取。
json
关键字参数代替data
。 - wbadartdata=payload
替换为json=payload
- Burhan Khalidurllib.requests.urlopen
的URL看起来格式不正确;user_name=user&001
是两个单独的字段。你确定这不应该是user_name=user+001
吗? - Martijn Pieters