我正在尝试编写一个脚本来检测和删除不再需要的GitHub存储库,删除部分遇到了一些麻烦。
我已经编写了一个辅助函数,该函数将向api.github.com发送DELETE请求并返回Promise。但是问题是,使用此功能时,我收到400错误的请求,但相同的请求在curl上工作正常。 (响应应为204 No Content。)。
这是“ https”版本。路径变量很好,我已经检查了它。它返回一个400错误的请求。
const deleteRepo = (n, token) => {
const path = `repos/${n}`
console.log(path)
const options = {
method: 'DELETE',
hostname: 'api.github.com',
path,
headers: {
'Accept': '*/*',
'Authorization': `Basic ${Buffer.from(token).toString('base64')}`,
'User-Agent': 'curl/7.52.1'
},
}
return new Promise((resolve, reject) => {
const req = https.request(options, res => {
body = ''
res.on('data', c => body += c)
if (res.statusCode == 204) {
console.log('Deleted ', path)
res.on('end', () => {
reject(body)
})
resolve()
} else {
console.log('Error deleting ', path, res.statusCode, res.statusMessage)
res.on('end', () => {
reject(body)
})
}
res.on('error', (e) => reject(e))
});
req.end()
console.log(req)
})
}
与curl相同的功能按预期工作,返回204 No Content。
const cmd = `curl -v -u ${token} -X DELETE https://api.github.com/repos/${n}`
console.log('Deleting ', path)
console.log(child_process.execSync(cmd, (e, stdout, stderr)=> {
if (e) {
console.error(e);
throw e;
}
console.log('stdout ', stdout);
console.log('stderr ', stderr);
}))