我试图在图表的第1版上使用计划程序端点。我的主要目标是更新任务的状态,并决定它是“完成”还是“完成”。我做的第一件事就是从自己那里得到所有的任务。请参阅以下端点:
https://graph.microsoft.com/v1.0/me/planner/tasks
function plannerCompleteTask(id, etag) {
var specialEtag = etag.replace(/\\/g, "");
var deferred = $q.defer();
var endpoint = config.baseGraphApiUrl + 'planner/tasks/' + id;
var data = {
"percentComplete": "100"
};
var configRest = {
headers: {
"content-type": "application/json",
"If-Match": specialEtag
}
}
//"completedDateTime": "2018-02-15T07:56:25.7951905Z",
$http.patch(endpoint, data, configRest).then(function (result) {
console.log('log code', result);
deferred.resolve(result.status);
});
return deferred.promise;
}
我将创建以下请求
这将返回状态:204,没有内容。
如果我使用" percentageCompleted:0"重新运行查询。在身体中我得到以下错误。
此外,如果我尝试记录请求,我会从AJAX调用回来,它不会给我任何回复。好像没有错误处理被发回。我需要这个,因为我必须在我的应用程序中重新加载数据;但是现在我的代码在图表上的更改完成之前运行,但它返回204状态。
所以我无法找到通话何时不起作用或找出它何时完成。之前有人遇到过这个问题吗?
感谢阅读和任何帮助将不胜感激。干杯!
答案 0 :(得分:0)
我认为你要找的是“首选”标题。如果在您的补丁请求中提供了“prefer”标头,其值为“return = representation”,则补丁的结果将是最终任务数据,包括具有200状态代码的新etag,而不是返回204的默认行为“否”内容“状态代码。
Planer中的写操作是异步的。因此,在可能的情况下,您应该始终根据使用prefer头的写操作结果更新本地数据,而不是再次读取它们。
在您的请求中,由于您在任务更新完成之前正在读取数据,因此基本上您正在更新要完成但未同时完成的任务的相同状态,这是冲突的原因。< / p>