nodejs获取sharepoint的pendingrequest
时间: 2023-05-10 14:51:10 浏览: 98
nodejs 获取计算机信息
Node.js获取SharePoint的PendingRequest需要使用到SharePoint REST API。PendingRequest是一个异步请求,需要先发送请求并等待返回,才能获取到相关的PendingRequest。
首先,在Node.js中需要使用请求模块,向SharePoint发起一次Get请求,通过访问 `https://<siteurl>/_api/contextinfo`来获取到访问许可Cookie,从而获得并发许可。
接下来使用POST方法,向 `https://<siteurl>/_api/contextinfo` 发送请求,获取Pending请求token:
```
var https = require('https');
var cookie = '';
var server = 'https://<siteurl>';
function getToken(cb) {
var options = {
hostname: server.replace('https://', ''),
path: '/_api/contextinfo',
method: 'POST',
headers: {
'Authorization': 'Bearer ' + cookie,
'Content-Type': 'application/json;',
'Accept': 'application/json;'
}
};
var req = https.request(options, function(res) {
var data = '';
res.on('data', function(chunk) {
data += chunk;
});
res.on('end', function() {
try {
var token = JSON.parse(data).d.GetContextWebInformation.FormDigestValue;
cb(null, token);
} catch (e) {
cb('Error parsing response: ' + e.message);
}
});
});
req.on('error', function(e) {
cb('Error while retrieving token:' + e.message);
});
req.end();
}
```
从response数据中解析出 `GetContextWebInformation.FormDigestValue`,这个token将被用于PendingRequest的下一步。
下面通过POST方法来实现投入到PendingRequest的一些代码中:
```
function addPendingRequest(cb) {
getToken(function(err, token) {
if (err) return cb(err);
var options = {
hostname: server.replace('https://', ''),
path: '/_api/contextinfo',
method: 'POST',
headers: {
'Accept': 'application/json;odata=verbose',
'ContentType': 'application/json;odata=verbose',
'Authorization': 'Bearer ' + cookie,
'X-RequestDigest': token,
}
};
var req = https.request(options, function(res) {
var data = '';
res.on('data', function(chunk) {
data += chunk;
});
res.on('end', function() {
try {
var result = JSON.parse(data);
cb(null, result.d);
} catch (e) {
cb('Error parsing response: ' + e.message);
}
});
});
req.on('error', function(e) {
cb('Error while retrieving token:' + e.message);
});
req.end();
});
}
```
这段代码中的 `addPendingRequest` 将Post请求发送给 `contextinfo`,然后从返回的JSON数据结果中解析出响应的PendingRequest对象。
最后,在Node.js中,调用 `addPendingRequest` 函数并传入回调函数,等待PendingRequest的结果即可:
```
addPendingRequest(function(err, pendingRequest) {
if (err) return console.error(err);
console.log(pendingRequest); // Returns the entire pending request object
});
```
这就是在 Node.js 使用 SharePoint REST API获取 PendingRequest的方法。需要注意的是在获取PendingRequest对象时需要先获取Context Web信息,从而获取投入PendingRequest的Token。
阅读全文