我发现了一些较旧的Stackverflow线程与此问题完全相同,但我无法使解决方案正常工作。
基本上,我想添加时间,我已经了解到,根据[1],唯一的方法是通过发出PUT请求,将现有对象添加到集合中并添加没有ID的新对象。
我已经复制了[1]中所示的例子:
https://[DOMAIN].attasksandbox.com/attask/api/v5.0/RESVT?method=POST&sessionID=330051c6aaa24cb48edb3eab113d3a5a&updates=[{
"userID": "57270ab200030c6814a20577576f8399",
"startDate": "2016-08-12",
"endDate": "2016-08-15"
},
{
"ID": "575e7a27001a0dd8312a29defd886b78",
"objCode": "RESVT",
"startDate": "2016-06-01T00:00:00:000+0200",
"endDate": "2016-06-04T00:00:00:000+0200",
"userID": "57270ab200030c6814a20577576f8399"
}]&atomic=true
执行请求时的响应:
{
"data": [
{
"objCode": "RESVT",
"ID": "575e7410001a031e06534a49b3032fd1"
},
{
"objCode": "RESVT",
"ID": "575e7410001a031f1ee4a0379c96d287"
}
]
}
但是我在用户的Timeoff页面(以及通过API搜索timeoff对象时)中看到的唯一时间是updates-parameter中的 last 对象。在上面的例子中,它将是6月1 - 4日。如果我重新安排更新数组,那么6月1 - 4日是列表中的第一个,那么我会看到8月12日到15日。
我也尝试过使用method = PUT而不是method = POST,但后来我收到了这条消息:
{
"error": {
"class": "java.lang.IllegalArgumentException",
"message": "Must specify an ID for each object that is edited"
}
}
我做错了什么?
[1]:php - AtTask API - 添加时间 - 堆栈溢出 AtTask API - Adding Time Off Hours
答案 0 :(得分:0)
您遇到的问题是您正在RESVT对象而不是USER对象进行更新,因此每次调用都会向用户添加一个新项目timeOff替换所有以前的条目,因此您只看到Last on的原因是因为它是最后一个运行并且所有previouse条目被删除。
要纠正此问题,您需要在用户对象上进行更新并更新保留时间集合。
您可以通过以下呼叫执行此操作。
font-family: "Comic Sans MS", cursive, sans-serif;