In my node.js app, I want to make a rest call to sharepoint 2013. This is the node.js code
function downloadData(res, key, success, fail) {
var opts = url.parse(key);
opts.method = 'GET';
opts.headers = {"Accept":"application/json;odata=verbose","X-RequestDigest":"0x146E2BDC9A21FDA62E793A0FC9793A530A5C6688BE194FB051703C8529B01A16607931C77D26EE61FA360AD04526F476A052FAC9B3C9277A5463AC20A27C3543,07 Mar 2016 15:37:18 -0000"};
opts.headers['Content-Type'] = 'application/json;odata=nometadata';
var req = http.request(opts, function(response) {
var str = '';
//another chunk of data has been recieved, so append it to `str`
response.on('data', function (chunk) {
str += chunk;
});
//the whole response has been recieved, so we just print it out here
response.on('end', function () {
success(res, str, key);
});
})
//req.write(data);
req.end();
}
I got the digest value from the client side, I did an alert statement, and copied it. I tried it on a sample url, which does work if I paste on the browser. When I run this, I get 401 unauthorized.
Does anyone know what's wrong?
Thanks
Here is what I have so far:
js
$.ajax({
url: "http://myserver:3000/_api/web/lists/GetByTitle('NewsNews')/items",
type: "GET",
headers: {
"Accept": "application/json;odata=verbose",
"X-RequestDigest": $("#__REQUESTDIGEST").val()
},
success: function (data) {
alert(JSON.stringify(data));
},
error: function (jqxr, errorCode, errorThrown) {
alert("failed");
}
});
node.js
var express = require('express');
var app = express();
var http = require('http');
var url = require('url');
var cacheObj = {};
app.get('/_api/web*', function (req, res) {
var key = req.originalUrl;
req.headers["Content-Type"] = "application/json;odata=nometadata";
res.setHeader('Content-Type', 'application/json');
processIncomingCall(key, res, req.headers);
});
function processIncomingCall(key, res, headers) {
var val = cacheObj[key];
if (val) {
console.log(val);
res.send(JSON.stringify(val));
} else {
downloadData(res, key, headers, function(res, data, key) {
cacheObj[key] = data;
setTimeout(function(key) {
delete cacheObj[key];
}, 1000 * 5, key);
res.send(JSON.stringify(data));
}, function() {
});
}
}
function downloadData(res, key, headers, success, fail) {
var opts = url.parse(key);
opts.method = 'GET';
opts.headers = headers;
var req = http.request(opts, function(response) {
var str = '';
//another chunk of data has been recieved, so append it to `str`
response.on('data', function (chunk) {
str += chunk;
});
//the whole response has been recieved, so we just print it out here
response.on('end', function () {
success(res, str, key);
});
})
//req.write(data);
req.end();
}
var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Started at http://%s:%s', host, port);
});