在documentation of the Github API之后为NodeJS应用创建授权。
我有以下代码:
var _options = {
headers: {
'User-Agent': app.get('ORGANISATION')
},
hostname: 'api.github.com'
};
var oauth2Authorize = function () {
var path = '/authorizations?scopes=repo';
path += '&client_id='+ app.get('GITHUB_CLIENT_ID');
path += '&client_secret='+ app.get('GITHUB_CLIENT_SECRET');
path += '¬e=ReviewerAssistant';
_options.path = path;
_options.method = 'POST';
var request = https.request(_options, function (response) {
var data = "";
response.on('data', function (chunk) {
data += chunk;
});
response.on('end', function () {
console.log(data);
});
});
request.on('error', function (error) {
console.log('Problem with request: '+ error);
});
};
我得到的只是:
408 Request Time-out
Your browser didn't send a complete request in time.
执行GET
请求有效。
答案 0 :(得分:4)
http.request()
doesn't immediately send the request
:
使用
http.request()
,必须始终致电req.end()
以表示您已完成请求 - 即使没有数据写入请求正文。
它会打开与服务器的基础连接,但保留request
不完整,以便可以随身携带正文/消息:
var request = http.request({ method: 'POST', ... });
request.write('data\n');
request.write('data\n');
request.end();
而且,无论是否有write()
的任何内容,您都必须致电end()
完成request
并完整发送。没有它,服务器最终会强制关闭打开的连接。在这种情况下,使用408
响应。